Bir PHP komut dosyası başka bir PHP komut aramak nasıl?

2 Cevap

Ben 34 saniyelik bir çalışma zamanı olan bir PHP komut dosyası var. Ama 30 saniye sonra ölür. Benim host 30 saniyelik bir zaman sınırı sanırım.

Ben iki bölüme komut bölme düşünüyorum söylemek PHP-1 ve PHP-2.

Can I call PHP-2 from PHP-1 and kill PHP-1? Both scripts have to run in sequence, so calling both of them using cron is not possible. [ My host provides cron with interval 5 mins and does not allow to change the start time]

-Will, bu host tarafından belirlenen zaman sınırı aşmak?

2 Cevap

Sen set_time_limit() işlevini kullanmanız gerekir, bu çoğu durumda yardımcı olur.

Alternatif olarak, Linux / Unix, bir arka plan işlemi olarak komut dosyası çalıştırmayı deneyebilirsiniz. PHP CLI bu amaç için kullanılabilir, CLI üzerinden çalışan komut hiçbir zaman sınırı vardır. Hemen komut denetimi döndürmeden, exec/system veya benzer PHP fonksiyonları PHP CLI fireup ve arka planda bir PHP komut dosyası çalıştırmak için kullanabilirsiniz. Çoğu durumda, CLI üzerinden çalışan bir PHP komut dosyası gibi hiçbir zaman sınırı olarak birkaç çevre ile ilgili farklılıklar dışında CGI ortamında yapacağını gibi davranır.

İşte bunu yapmak için bir yoludur:

exec("/usr/bin/php script.php > /dev/null &");
      ^            ^          ^           ^
      |            |          |           |
      |            |          |           +-- run the specified process in background
      |            |          +-------------- redirect script output to nothing
      |            +------------------------- your time consuming script
      +-------------------------------------- path to PHP CLI (not PHP CGI)

Daha fazla bilgi: Running a Background Process in PHP