Rumah  >  Artikel  >  pembangunan bahagian belakang  >  daemon - php守护进程运行一段时间后没死但是不工作了

daemon - php守护进程运行一段时间后没死但是不工作了

WBOY
WBOYasal
2016-06-06 20:20:411564semak imbas

我用 while(true)在后台跑了一个守护进程,进程的任务是读取接口,并将接口内容放进Mysql && Redis && json.js。

问题是进程运行一段时间(大概半月)后,没有死,但是不工作了。

请问这是一个常见的问题吗?还是因为我的代码有问题导致的问题。

我现在的解决办法是定时重启下进程,有更好的办法吗?

部分代码

<code>public function sync() {
    while(true){
        $this->syncData();
        sleep(5);
    }
}</code>

回复内容:

我用 while(true)在后台跑了一个守护进程,进程的任务是读取接口,并将接口内容放进Mysql && Redis && json.js。

问题是进程运行一段时间(大概半月)后,没有死,但是不工作了。

请问这是一个常见的问题吗?还是因为我的代码有问题导致的问题。

我现在的解决办法是定时重启下进程,有更好的办法吗?

部分代码

<code>public function sync() {
    while(true){
        $this->syncData();
        sleep(5);
    }
}</code>

编写运行在命令行下的PHP CLI程序时,建议不要使用持久连接,建议每次使用MySQL时都重新打开和关闭数据库连接,避免数据库连接丢失时导致CLI程序出现故障.Redis同理.

认为可以尝试workerman 或者swoole 这两个适合做守护进程任务的框架,这两个都比较活跃,并且使用者比较多

用shell的while来代替PHP的while

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn