PHP警告:打开文件太多 – 任何想法?
发布时间:2020-12-13 21:34:17 所属栏目:PHP教程 来源:网络整理
导读:我在Fedora上运行 PHP 5.2,并且在我的循环大约1000次迭代后我不断收到此警告,这意味着程序已停止工作并需要重新启动.我可以将其设置为在1000次迭代后退出并在此后不久通过cron重新启动,但这感觉就像胆小鬼的出路一样.循环如下;我应该补充一点,get_load()预先
我在Fedora上运行
PHP 5.2,并且在我的循环大约1000次迭代后我不断收到此警告,这意味着程序已停止工作并需要重新启动.我可以将其设置为在1000次迭代后退出并在此后不久通过cron重新启动,但这感觉就像胆小鬼的出路一样.循环如下;我应该补充一点,get_load()预先形成一个file_get_contents()调用.
while ($row = select_row($sql)) { while (($load = get_load()) > 10) { echo "Going to sleep (load: ".$load.")n"; sleep(60*3); } $id = $row['id']; foreach ($sizes as $abbr=>$size) { if($row[$size] != "yes") { continue; } $filename = "/images/".$abbr."/".$id.".jpg"; $tmp_file = "/tmp/".$id.".jpg"; if ($size == "large") { //We want to progressively interlace our large bookcovers because it saves on filesave above 10K. $cmd = "convert -strip -interlace Plane ".$filename." ".$tmp_file; } else { $cmd = "convert -strip ".$filename." ".$tmp_file; } $convert = popen($cmd." 2>&1","r"); if (is_resource($convert)) { echo fgets($convert); if(pclose($convert) == 0) { //Upload converted file to remote server } unlink($tmp_file); } } 编辑:在阅读前两个答案后,我意识到在取出与我的问题无关的文件上传代码时,我拿出了我的pclose()语句.放入我的代码中出现的pclose(). 进一步编辑:根据要求发布get_load() function get_load() { $load = explode(" ",file_get_contents("/proc/loadavg")); return $load[0]; } 解决方法
使用
pclose 后应关闭指针.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |