شرح تعبير cron
أداة تشرح أي تعبير cron — الصيغة المختصرة التي تحدد مواعيد تنفيذ مهام مجدوَلة في الخوادم — بجملة عربية مفهومة تصف متى تعمل المهمة فعليًا: كل يوم، أو كل ساعة، أو في يوم معين من الأسبوع. تُدخل التعبير فتحصل على الشرح فورًا دون حفظ رموزه غيبًا.
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
لماذا صيغة cron صعبة القراءة رغم بساطتها
تعبير cron نمطي يبدو مثل خمسة أرقام ونجوم مفصولة بمسافات، لا يكشف معناه لمن لا يحفظ ترتيب الحقول الخمسة — الدقيقة والساعة ويوم الشهر والشهر ويوم الأسبوع — عن ظهر قلب. حتى المطور المتمرس يحتاج أحيانًا لحظة تركيز أو مرجعًا خارجيًا لفهم تعبير معقّد كتب قبل أشهر ونسي تفاصيله.
من رموز إلى جملة عربية واحدة
تحلّل الأداة كل حقل من حقول التعبير الخمسة وتترجمها إلى جملة عربية واحدة واضحة، مثل: كل يوم اثنين الساعة الثالثة صباحًا. هذا يوفّر على المطور فتح مرجع خارجي أو حساب المعنى يدويًا حقلًا حقلًا، خصوصًا عند مراجعة كود قديم كتبه زميل غادر الفريق منذ فترة.
اكتشاف خطأ في تعبير مكتوب بالخطأ
تعبير cron مكتوب بخطأ بسيط — رقم في الحقل غير الصحيح مثلًا — قد يُشغِّل مهمة كل دقيقة بدل كل يوم دون أن يظهر خطأ صريح في النظام. عرض التعبير كجملة عربية مفهومة يكشف هذا النوع من الأخطاء فورًا، لأن نتيجة مثل كل دقيقة تبدو غريبة واضحة لمهمة كان يُفترَض تشغيلها يوميًا فقط.
مراجعة عدة تعبيرات دفعة عبر الـAPI
لفريق يدير عشرات المهام المجدوَلة في نظام واحد، يتيح الـAPI شرح دفعة كاملة من تعبيرات cron برمجيًا بسعر $0.002 لكل تعبير، مفيد لبناء لوحة مراقبة تعرض جدول كل مهمة بجملة مفهومة بدل الرمز الخام فقط.
حالات الاستخدام
مراجعة كود قديم كتبه زميل سابق
يراجع مطور في شركة الخليج الرقمية تعبير cron في كود قديم دون تعليق يشرحه، ويستخدم الأداة لفهم متى تعمل المهمة فعليًا قبل تعديل الجدولة.
اكتشاف خطأ في جدولة نسخة احتياطية
يلاحظ فريق تقني أن نسخة احتياطية تعمل بتكرار غير متوقع، ويستخدم الأداة فيكتشف أن تعبير cron مكتوب بخطأ يجعلها تعمل كل ساعة بدل كل يوم.
توثيق جدول مهام نظام داخلي
يوثّق فريق تقني في مؤسسة النخيل للمقاولات جدول عشرين مهمة مجدوَلة في نظامهم الداخلي، ويستخدم الـAPI لتوليد شرح عربي مفهوم لكل تعبير قبل إدراجه في دليل النظام.
الأسئلة الشائعة
هل تدعم الأداة الصيغ الخاصة مثل @daily؟
نعم، تتعرف الأداة على الاختصارات الشائعة مثل @daily وتشرحها بجملة عربية واضحة كأي تعبير عادي.
هل تتحقق الأداة من صحة التعبير أم تشرحه فقط؟
تشرح معنى التعبير المُدخَل؛ إن كان التعبير غير صالح بنيويًا، تنبّه الأداة إلى ذلك بدل تقديم شرح مضلِّل.
كم تكلفة شرح عدة تعبيرات دفعة عبر الـAPI؟
$0.002 لكل تعبير؛ شرح تعبير واحد أو عدة تعبيرات يدويًا من المتصفح يبقى مجانيًا بلا حدّ.
هل يمكن معرفة الموعد التالي للتشغيل لا الشرح فقط؟
شرح التعبير يصف نمط التكرار العام؛ لمعرفة موعد التشغيل القادم بتاريخ محدد، توجد أداة منفصلة مخصصة لذلك.
هل تُحفَظ التعبيرات التي أدخلها؟
لا، من المتصفح تجري المعالجة محليًا، وعبر الـAPI يُعالَج الطلب ويُعاد فورًا دون تخزين.
هل تعمل الأداة من الجوال؟
نعم، صفحة ويب عادية تعمل من متصفح الجوال بنفس الطريقة على الحاسوب.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/cron-explain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/cron-explain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/cron-explain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/cron-explain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/cron-explain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"items": [
"valor-1",
"valor-2"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cron_explain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |