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

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

WBOY
WBOYOriginal
2016-06-06 20:20:411564Durchsuche

我用 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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn