Update: 2026-08-02 22:51:18
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# ============================================================
|
||||
# جدول المهام المجدولة — سيرو الأردن (بعد الانتقال إلى دوكر)
|
||||
# ============================================================
|
||||
# المشكلة التي يعالجها هذا الملف:
|
||||
#
|
||||
# الجدول القديم كان يشغّل كل السكربتات على المضيف مباشرة:
|
||||
# /usr/bin/php8.4 /home/intaleqapp-jordan-siro/htdocs/.../backend/...
|
||||
#
|
||||
# بعد الانتقال إلى دوكر لم تعد هذه السكربتات قادرة على العمل:
|
||||
#
|
||||
# • Redis لا يَنشر أي بورت إلى المضيف (انظر خدمة redis في
|
||||
# docker-compose.yml — لا يوجد فيها ports:). أي أن Redis يُرى فقط
|
||||
# من داخل شبكة دوكر. كل سكربت على المضيف يحصل على $redis = null.
|
||||
#
|
||||
# • MySQL منشور على 127.0.0.1:33061 وليس 3306، فأي .env على المضيف
|
||||
# ما زال يشير إلى 3306 يفشل في الاتصال.
|
||||
#
|
||||
# • bootstrap.php يستنتج مسار .env من __DIR__ عبر المطابقة مع
|
||||
# ^/home/[^/]+ — فسكربتات المضيف تقرأ /home/intaleqapp-jordan-siro/.env
|
||||
# (ملف ما قبل دوكر)، بينما الحاويات تقرأ متغيّراتها من docker/.env.
|
||||
# نتيجةً لذلك كان الطرفان يعملان بإعدادات مختلفة تماماً.
|
||||
#
|
||||
# الحل: تشغيل كل شيء داخل حاوية php، حيث أسماء الشبكة (mysql / redis)
|
||||
# والمتغيّرات صحيحة. هذا نفس الدرس المستفاد من عطل السوكيتات سابقاً.
|
||||
#
|
||||
# ------------------------------------------------------------
|
||||
# التركيب:
|
||||
# crontab -e ثم الصق المحتوى أدناه
|
||||
#
|
||||
# ملاحظة: المستخدم الذي يملك الـ crontab يجب أن يكون عضواً في مجموعة
|
||||
# docker، وإلا فشل كل سطر بخطأ صلاحيات.
|
||||
# ------------------------------------------------------------
|
||||
|
||||
SIRO=/home/intaleqapp-jordan-siro/htdocs/jordan-siro.intaleqapp.com/docker
|
||||
DEX=/usr/bin/docker compose -f $SIRO/docker-compose.yml exec -T php php
|
||||
|
||||
# ============================================================
|
||||
# مواصلاتي (Transit)
|
||||
# ============================================================
|
||||
*/1 * * * * $DEX /var/www/backend/transit/cron_approaching_alerts.php >> /var/log/transit_alerts.log 2>&1
|
||||
0 3 * * * $DEX /var/www/backend/transit/cron_sync_members.php >> /var/log/transit_sync.log 2>&1
|
||||
30 3 * * * $DEX /var/www/backend/transit/cron_cleanup.php >> /var/log/transit_cleanup.log 2>&1
|
||||
|
||||
# ============================================================
|
||||
# محرّك التسعير والبوتات
|
||||
# ============================================================
|
||||
# تغذية طابور مهام البوت في Redis.
|
||||
# كان الجدول القديم يشغّل generate_10_tasks_cli.php وهو يكتب إلى
|
||||
# tasks.json الذي يقرأه standalone_worker.php (نسخة اختبار محلي بلا
|
||||
# قاعدة بيانات). النتائج لم تكن تصل إلى scraped_competitor_prices إطلاقاً.
|
||||
*/15 * * * * $DEX /var/www/backend/bot/push_10_tasks.php >> /var/log/bot_tasks.log 2>&1
|
||||
|
||||
*/5 * * * * $DEX /var/www/backend/bot/cron_kazan_adjuster.php >> /var/log/bot_kazan.log 2>&1
|
||||
*/10 * * * * $DEX /var/www/backend/bot/cron_surge_opportunity.php >> /var/log/bot_surge.log 2>&1
|
||||
*/16 * * * * $DEX /var/www/backend/bot/cron_generate_heatmap_cache.php >> /var/log/bot_heatmap.log 2>&1
|
||||
0 * * * * $DEX /var/www/backend/bot/cron_seasonal_pricing.php >> /var/log/bot_seasonal.log 2>&1
|
||||
0 * * * * $DEX /var/www/backend/bot/cron_predictive_demand.php >> /var/log/bot_demand.log 2>&1
|
||||
0 */3 * * * $DEX /var/www/backend/bot/cron_ai_engine.php >> /var/log/bot_ai.log 2>&1
|
||||
0 */3 * * * $DEX /var/www/backend/bot/cron_pricing_stability_engine.php >> /var/log/bot_stability.log 2>&1
|
||||
|
||||
# لقطة لوحة المعلومات — كانت مسجّلة ثلاث مرات (ساعياً + يومياً 3ص +
|
||||
# أسبوعياً الاثنين 4ص). التشغيل الساعي يغطي الاثنين الآخرين بالكامل،
|
||||
# وكانت النسخ الثلاث تتسابق على نفس الجداول عند الساعة 3 صباحاً.
|
||||
0 * * * * $DEX /var/www/backend/bot/cron_dashboard_snapshot.php >> /var/log/bot_snapshot.log 2>&1
|
||||
|
||||
# ============================================================
|
||||
# الإشعارات والتسويق
|
||||
# ============================================================
|
||||
0 * * * * $DEX /var/www/backend/bot/cron_auto_marketing_pusher.php >> /var/log/bot_pusher.log 2>&1
|
||||
0 10 * * * $DEX /var/www/backend/bot/cron_passenger_reengagement.php >> /var/log/bot_reengage.log 2>&1
|
||||
0 0 * * 0 $DEX /var/www/backend/bot/cron_weekly_health_report.php >> /var/log/bot_health.log 2>&1
|
||||
|
||||
0 */3 * * * $DEX /var/www/backend/marketing_engine/telegram_scraper.php >> /var/log/mkt_telegram.log 2>&1
|
||||
0 */4 * * * $DEX /var/www/backend/marketing_engine/cron_insert_task.php >> /var/log/mkt_tasks.log 2>&1
|
||||
0 10 * * 0 $DEX /var/www/backend/marketing_engine/cron_weekly_report.php >> /var/log/mkt_weekly.log 2>&1
|
||||
|
||||
# ============================================================
|
||||
# انتقالي — يُحذف بعد التأكد من مسار worker.php
|
||||
# ============================================================
|
||||
# يفرّغ results.json (مخرجات standalone_worker.php القديم) إلى MySQL.
|
||||
# بعد انتقال البوت إلى worker.php لن يُكتب هذا الملف، وسيطبع السكربت
|
||||
# "No results file found" ثم يخرج. أبقِه أسبوعاً لاستيعاب أي نتائج
|
||||
# متبقّية، ثم احذف السطر.
|
||||
0 * * * * $DEX /var/www/backend/bot/cron_empty_results_to_db.php >> /var/log/bot_drain.log 2>&1
|
||||
|
||||
# ============================================================
|
||||
# سكربتات موجودة في الكود وغير مجدولة — قرار مطلوب
|
||||
# ============================================================
|
||||
# backend/bot/cron_gemini_advisor.php
|
||||
# backend/bot/cron_silent_push_inactive.php
|
||||
# backend/bot/cron_generate_pricing_cache.php
|
||||
# لم تكن في الجدول القديم. راجعها وقرّر: تُجدول أم تُحذف من الكود.
|
||||
Reference in New Issue
Block a user