1月31日上午8:54分在start_gateway.php中啟動的Timer,兩秒觸發(fā)一次,在第二天(上午0:33)的時(shí)候Timer不再觸發(fā)函數(shù)了。
[attach]240[/attach]
請問Gateway是否有崩潰日志,Timer停止是因?yàn)橄到y(tǒng)回收了還是代碼崩潰了或者是Timer是有最大計(jì)數(shù)的?
Timer不會自己消失,更不會被系統(tǒng)回收,這種問題絕大多數(shù)是業(yè)務(wù)問題,或者是開發(fā)者判斷失誤。
請仔細(xì)檢查自己的業(yè)務(wù)邏輯是否有問題,比如$openids是否可能為空,file_get_contents($callback)有可能一直阻塞不返回導(dǎo)致定時(shí)器卡主。如果$value='/tmp/queue/',exec("rm -rf /tmp/queue/") 會刪掉queue目錄的,foreach永遠(yuǎn)將不會進(jìn)入,也就沒有日志。
php start.php status 可以看到各個(gè)進(jìn)程運(yùn)行情況,包括gateway運(yùn)行情況。
最后建議在Timer函數(shù)第一行就記錄個(gè)日志,看下是否有進(jìn)入定時(shí)邏輯。如果發(fā)現(xiàn)定時(shí)器沒有運(yùn)行,可以利用strace lsof兩個(gè)命令排查下進(jìn)程卡在哪里,比如卡在url請求上