Bir sürecini başlatmak ve dönüş kodu almak ya da çok uzun sürer eğer kesmek

1 Cevap php

Ben bir komut satırında (aka CLI modu dahil hiçbir web sunucusu) başlatılan bir PHP komut dosyası var.

Bu komut genellikle bir kaç dakika sonra çıkarken, bir süre çalışacak bir komut başlatacak. Ama zaman zaman, bu komut nedeniyle çeşitli konularda saatlerce çalışacak ve ben yapabilirim en iyi onu öldürmek ve yeniden başlatmadan önce bir süre bekleyin.

Ben vurgulamak istiyorum iki şey:

  • Ben komuta içindeki kod hiçbir kontrole sahip, ve arıza tespiti geliştirmek olamaz.
  • Bu önemli bir görev değil, ve bu şekilde çalışma için mükemmel ok.

Söyleniyor, ben komut daha N saniye boyunca çalışan olup olmadığını ben çocuk süreci öldürür böylece, benim kodunda şeyleri iyileştirmek istiyoruz. Ama yine de iyi çalışır zaman, komut dönüş kodu almak istiyorum.

Pseudo-kod gibi bir şey bu olmalı:

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
        }
    }
}

Nasıl PHP uygulamak istiyorsunuz?

Teşekkür ederiz!

Solution : I ended up using the SIG_ALERT signal. More info on the signals handling and the pcntl lib in the pages provided by Gordon his post de.

1 Cevap

Read through this Chapter of Practical PHP Programming. It covers interoperating with Processes extensively. And also have a look at the PHP Manual's pages on Process Control.

Ayrıca Gearman ilginizi çekebilir

Sorry for not providing any code. I never had the need for Process Control stuff, so I just kept in memory where to look in case I'd ever need it.