مهام مجدولة — موقعك ينفّذ شغله لحاله بتوقيت بلدك
المهمة المجدولة في ابني كود جوّا موقعك يشتغل بوقت تحدده أنت، بدون ما يفتح حدا الصفحة. تقرير مبيعات يوصلك ٧:٠٠ صباحاً، تذكير للزبون قبل موعده بيوم، فحص مخزون كل ساعة، حذف حجوزات منتهية كل ليلة. تطلبها بالمحادثة، وتنضبط بملف اسمه functions/_jobs.json فيه اسم الدالة والتوقيت والمنطقة الزمنية — مثلاً daily عند 00:00 بتوقيت Asia/Damascus. المنصّة تفحص المهام المستحقة كل دقيقة، وتحجز المهمة قبل ما تشغّلها حتى ما تنعاد مرتين.
نُشر في:
ابدأ مجاناًشو تقدر تجدول، وكيف ينضبط التوقيت
عندك خمس صيغ جدولة: كل ١٥ دقيقة، كل ٣٠ دقيقة، كل ساعة، يومي، وأسبوعي. اليومي والأسبوعي ياخذون وقت بصيغة ساعة ودقيقة، والأسبوعي ياخذ كمان رقم يوم الأسبوع من صفر لستة.
التوقيت ينحسب على ساعة صاحب الموقع مو على UTC. تكتب Asia/Riyadh أو Asia/Damascus أو Africa/Cairo بالإعداد وتنتهي — ما في تحويل يدوي ولا حسبة فروقات ولا مفاجأة بالتوقيت الصيفي.
أقل تكرار متاح كل ١٥ دقيقة. ما في كل دقيقة ولا كل خمس دقائق. لو محتاج تفاعل أسرع من هيك، اللي بدك إياه ويب هوك يستقبل الحدث لحظة وقوعه، مو مهمة تسأل كل شوي.
وداخل المهمة، ما في مستخدم مسجّل دخول — الهوية فاضية دائماً لأن اللي شغّل الكود جدول مو زبون. فاكتب الدالة على أساس صلاحية صاحب الموقع، ولا تعتمد على هوية مستخدم لتحديد شو تقرأ.
خمس مهام يشغّلها التجار فعلياً
كل صف منها دالة وحدة صغيرة تقرأ من قاعدة الموقع وتعمل شي واحد بوضوح.
| المهمة | التوقيت | شو تعمل | لمين تنفع |
|---|---|---|---|
| تقرير يوم أمس | يومي ٧:٠٠ صباحاً | تقرأ طلبات أمس، تحسب العدد والمجموع، وترسل إيميل واحد فيه الجدول | متجر أو مطعم يبي رقم واحد كل صباح |
| تذكير موعد قبل يوم | يومي ٦:٠٠ مساءً | تمر على حجوزات بكرا وترسل تذكير مكتوب لكل واحد | عيادة، صالون، مركز تدريب |
| فحص مخزون منخفض | كل ساعة | أي منتج نزل تحت الحد ترسل تنبيه تيليجرام أو إيميل | متجر يبيع كميات محدودة |
| إنهاء اشتراكات منتهية | يومي ١٢:٠٠ ليلاً | تقلب حالة الاشتراكات المنتهية وتقفل الوصول | موقع محتوى أو عضويات |
| تنظيف وأرشفة | أسبوعي | تحذف مسودّات قديمة وترشّف رسائل تواصل مقروءة | أي موقع يجمّع بيانات كل يوم |
كيف تشغّل أول مهمة
اطلبها بالمحادثة مع التوقيت
اكتب التوقيت والمنطقة الزمنية بالنص: ابعتلي تقرير مبيعات كل يوم ٧ صباحاً بتوقيت الرياض. لا تخلي الوكيل يخمّن المنطقة الزمنية.
الوكيل يكتب الدالة ويسجّلها بالجدول
ينشئ ملف الدالة، ويضيف سطرها بملف _jobs.json فيه اسم الدالة والصيغة والوقت والمنطقة الزمنية.
انشر الموقع
المهام ما تشتغل إلا على موقع منشور. والشغل اللي انصفّ وقت الموقع كان غير منشور تنتهي صلاحيته بعد ٣ أيام.
راقب أول تشغيلة
خلي الدالة تسجّل مخرجاتها، وافتح السجل بعد أول موعد استحقاق. أهم فحص إن الوقت طلع صح بتوقيتك أنت.
عدّل بالمحادثة وقت ما بدك
غيّر الساعة، غيّر التكرار، أوقف مهمة، أو أضف وحدة جديدة. كلها تعديلات نصية على نفس الملف.
دورة التشغيل — وليش ما تنعاد مرتين
القاعدة المكتوبة داخل النظام: بالفلوس والبريد، تخطّي تشغيلة شي تقدر تعوّضه، وتكرارها شي ما تقدر تسحبه. التصميم يفضّل ما يعيد.
مهام ابني مقابل cron على سيرفرك
| البند | مهام مجدولة في ابني | cron على سيرفر خاص |
|---|---|---|
| الإعداد | جملة بالمحادثة ثم نشر | سيرفر + crontab + سكربت + مراقبة |
| أقل تكرار | كل ١٥ دقيقة | كل دقيقة أو أقل |
| عدد المهام | حتى ١٠ مهام للموقع الواحد | بلا حد عملي |
| المنطقة الزمنية | تُحدد بالاسم لكل مهمة — Asia/Riyadh مثلاً | حسب توقيت السيرفر، غالباً UTC وتحوّل يدوي |
| التشغيل المزدوج | مستحيل — المهمة تُحجز قبل ما تُنفّذ | يصير لو تراكبت تشغيلتان |
| عند الفشل المتكرر | تتعطّل تلقائياً بعد ١٠ إخفاقات متتالية | تفضل تفشل بصمت لين تنتبه |
| سقف التشغيل | ٢٠٠ تشغيلة باليوم للمهمة الواحدة | بلا سقف |
| المكتبات | صندوق QuickJS بلا npm | أي مكتبة تبيها |
شكل المخرَج اللي يوصلك
حدود لازم تبني عليها من البداية
الجدولة قوية بس مقيّدة عن قصد، حتى ما يتحوّل موقع واحد لعبء على المنصّة كلها.
عشر مهام كحد أقصى للموقع
الزايد يتجاهل برسالة صريحة: أقصى عدد مهام مجدولة للموقع ١٠. لو محتاج أكثر، اجمع مهام متقاربة بدالة وحدة تتفرّع داخلياً.
موقع منشور فقط
قبل النشر ما تشتغل ولا مهمة، والشغل المصفوف قبل النشر ينتهي بعد ٣ أيام.
٢٠٠ تشغيلة باليوم للمهمة
المهمة اللي كل ١٥ دقيقة تشتغل ٩٦ مرّة باليوم، فهي مرتاحة داخل السقف. السقف يصير مهم لو صففت شغل مؤجّل كثير.
تعطيل تلقائي بعد ١٠ إخفاقات متتالية
هذا حماية مو عقوبة: مهمة فاشلة تكرر نفس الخطأ ٢٠٠ مرّة باليوم ما تنفع حدا. تصلّح السبب وتعيد تشغيلها.
ما في هوية داخل المهمة
الهوية فاضية دائماً. لو منطقك يحتاج يعرف صاحب كل صف، خزّن معرّف المستخدم داخل الصف نفسه وقت الإنشاء.
قراءة محدودة داخل الدالة
القراءة تقف عند ٢٠٠ صف بلا إزاحة، وما في قراءة شاملة للجدول. التقارير الكبيرة تنبني على تجميع تكتبه أنت مع كل عملية — عدّاد يومي مثلاً — مو بمسح آلاف الصفوف كل صباح.
الذكاء الاصطناعي ما ينادى من داخل المهمة
ذكاء وقت التشغيل ينادى من كود المتصفح. يعني المهمة المجدولة تجهّز البيانات وترسل، والتلخيص الذكي يصير باللوحة لما تفتحها أنت.
الإيميل له رصيده
الإرسال من داخل المهمة يمر على نفس رصيد الموقع: ٥٠٠ رسالة مجانية لكل مشروع بالشهر وسقف يومي ٣٠٠ رسالة، وخمس رسائل كحد أقصى بالتشغيلة الواحدة.
أسئلة شائعة
اقرأ أيضاً
خلي موقعك يبعتلك تقرير أمس كل صباح
اكتب بالمحادثة: ابعتلي تقرير مبيعات كل يوم ٧ صباحاً بتوقيت الرياض — وانشر الموقع، والباقي يشتغل لحاله.
ابدأ مجاناً