قم بتشغيل عملية والحصول على رمز الإرجاع الخاص بها أو مقاطعةها إذا استمرت لفترة طويلة

StackOverflow https://stackoverflow.com/questions/1999580

سؤال

لديّ برنامج نصي PHP تم إطلاقه من سطر الأوامر (ويعرف أيضًا باسم CLI Mode ، لا يوجد خادم ويب).

في هذا البرنامج النصي ، أطلق أمرًا سيستمر من بعض الوقت ، وعادة ما يخرج بعد بضع دقائق. ولكن في بعض الأحيان ، سيتم تشغيل هذا الأمر لساعات بسبب مشاكل مختلفة ، وأفضل ما يمكنني فعله هو قتله والانتظار لفترة من الوقت قبل إطلاقه مرة أخرى.

شيئان أريد التأكيد عليهما:

  • ليس لدي أي سيطرة على الكود داخل هذا الأمر ، ولا يمكنني تحسين الكشف عن الفشل.
  • إنها ليست مهمة مهمة ، ولا بأس أن تعمل بهذه الطريقة.

ومع ذلك ، أود تحسين الأشياء في الكود الخاص بي ، حتى أتمكن من قتل عملية الطفل إذا كان الأمر يعمل لأكثر من ثوانٍ. لكنني ما زلت أرغب في الحصول على رمز الإرجاع من الأمر ، عندما يتم تشغيله بشكل جيد.

يجب أن يكون الرمز الزائف شيئًا من هذا القبيل:

Launch command
While command is running
{
    If the command is done running
    {
        echo return code
    }
    else
    {
        If the command has been running for more than N seconds
        {
            Kill the child process
        }
    }
}

كيف يمكنك تنفيذ هذا في PHP؟

شكرًا لك !

الحل: انتهى بي الأمر باستخدام إشارة sig_alert. مزيد من المعلومات حول معالجة الإشارات و pcntl lib في الصفحات التي يوفرها جوردون في منصبه.

هل كانت مفيدة؟

المحلول

من خلال قراءة هذا الفصل من برمجة PHP العملية. ويغطي العمليات البينية مع العمليات على نطاق واسع. وأيضًا إلقاء نظرة على صفحات دليل PHP على تحكم العملية.

قد تكون مهتم ايضا ب جيرمان

آسف لعدم توفير أي رمز. لم أكن بحاجة إلى حاجة إلى التحكم في العملية ، لذلك ظللت في الذاكرة أين أنظر في حال كنت في حاجة إليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top