加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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后应关闭指针.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读