用php cli模式获取数据,数据能正常获取,使用htop查看,有几个获取的php程序一直存在,使用ps查看,发现有些一直存在了很多天,内存不释放,导致运行一段时间后,内存溢出,服务器崩溃
实际运行时间不超过半小时,但这个php已经超过3小时了,并且不会自动释放
php代码没死循环,没发现什么问题,并且只是偶尔才不会释放,大部分还是会主动释放,查不出什么问题
怀疑curl获取数据,如果catch到错误,cli不会停止,就呆在那?
php代码设置了最大运行时间,但是无效,还是会一直存在!
解决办法:
一楼提供了一种新的思路,但在那之前就找到了原因,我发现,失败的获取,都会一直存在,而且新的api没使用sdk都不会有问题,排查对比,发现sdk的curl没有设置CURLOPT_TIMEOUT时间,sdk里面加上curl_setopt($connection, CURLOPT_TIMEOUT, 30),就不会有一直存在的php进程。
结论:使用cli模式,如果有curl,没设置超时时间,就会一直存在于内存,如果多的话,就会内存溢出,服务器崩溃。
虽然没用到一楼的办法,但是采纳一楼的答案吧。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
欢迎选择我的课程,让我们一起见证您的进步~~