PHP Senaryo loop

4 Cevap php

Ben bir dizin denetler ve (Bu bir oyun için değil) 15 saniye içinde değiştirilmiş hiçbir dosyaları siler bir PHP komut dosyası var.

Benim sorunum bu script her zaman çalıştırmak için nasıl olduğunu. Ben her 10 dakikada bir çalışacak bir cron işi kurmak ve daha sonra PHP komut dosyası bir uyku (10) ile sonsuz bir döngü var. Benim düşünce kodunu her 10 saniyede çalışır oldu, ve durumda komut cron işi sonunda onu yeniden başlatmak olacaktır, durdu.

Komut başladı sonra ancak, yaklaşık 3 döngüler (30 saniye) için çalışır ve sonra durur. Ben PHP sadece dosya yükü başına çok bellek alır duydum.

Nasıl süresiz bu PHP komut dosyası döngü yapabilir? Belki kendisini aramak için bir yol var

4 Cevap

Bir aralıkta bir müşteri çatallar bir ebeveyn php işlemi çalıştırabilir. Burada bir seçenek olarak keşfetmek merak ediyorsanız iyi bir başlangıç ​​noktasıdır: bunu bu şekilde yapıyor hakkında http://ca2.php.net/pcntl Güzel bir şey ana süreç makul bir miktar içinde bitmiyor istemci pids öldürmek olabilir zamanı.

Hızlı ve kirli bir şey arıyorsanız size (Linux üzerinde iseniz) oldukça kolay php çağırmak için bir bash komut dosyası yazabilirsiniz:

#!/bin/bash
while [ "true" ]; do
        /path/to/script.php
        sleep 15
done

EDIT You don't really even need the script, bash will do it all on one line:

while [ "true" ]; do /path/to/script.php; sleep 15; done

PHP çalıştırılabilir bir komut satırı yorumlayıcısı, bir CGI çalıştırılabilir olarak kullanılmak için derlenmiş olduğundan emin olun. PHP normal max_execution_time (varsayılan 30 saniye) daha uzun süre çalıştırmak komut öldürür. CLI yürütülebilir, ancak bu sınırlama getirmez.

More info about CLI vs. CGI SAPIs.

Sen --version argümanı kullanarak yürütülebilir SAPI kontrol edebilirsiniz:

$ php --version
PHP 4.3.0 (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies

Sen php.ini dosyasında max_execution_time parametre kontrol etmek isteyebilirsiniz. Ben varsayılan 30 saniyedir inanıyorum. Eğer kendisi bir örneği zaten çalışıyor olmadığını kontrol etmek için komut bazı mantık eklemek sürece bunu cron ile kurulum var yolu, muhtemelen 10 dakika sonra çalışan script birden çok örneği olacaktır

Bir PEAR module uzun soluklu PHP komut yazmak için vardır. Ama kendim kullanılmaz ettik.