PHP - file_exists 需要很长时间

Posted

技术标签:

【中文标题】PHP - file_exists 需要很长时间【英文标题】:PHP - file_exists takes very long 【发布时间】:2016-03-17 14:53:20 【问题描述】:

我想阻止 php 脚本同时运行。我通过检查“lock.txt”文件是否存在来实现这一点。然而,这需要几秒钟,即使它应该非常快。

<?php
    if (!file_exists('lock.txt')) 
        $lock = fopen('lock.txt','w');

        ////////////////////////////////////////////
        ......script that takes 30-160 seconds......
        ////////////////////////////////////////////

        $jsonArray = array(utf8_encode('script')=>utf8_encode('finished'));
        fclose($lock);
        unlink('lock.txt');
     else 
        $jsonArray = array(utf8_encode('script')=>utf8_encode('locked'));
    
    echo json_encode($jsonArray);
?>

为什么需要这么长时间?它应该只是使初始 if 语句失败并快速回显json_encode

我做错了吗?

【问题讨论】:

文件大小是多少? 7 KB(如果包含类,则为 670 KB,即使 if 语句未通过)。这需要很长时间,因为它从 API 请求数据(有点慢),而不是因为脚本很大。 如果你指的是 'lock.txt' 文件:它是 0 KB。 这是通过 Web 界面还是命令行?你也应该看看php.net/manual/en/function.flock.php @displaynn 请告诉我你没有使用 IE。 【参考方案1】:

问题出在客户端,我在 Chrome 浏览器中使用了两个选项卡。

感谢@apokryfos 和@WheatBeak 帮助我得出这个结论。

【讨论】:

以上是关于PHP - file_exists 需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章

用 std::chrono 计算持续时间在需要很长时间时给出 0 纳秒

Fetch在等待很长时间时给出空响应

带有recyclerviews的碎片需要很长时间才能加载

php中file_exists的CPU负载

PHP页面需要很长时间才能加载

MySql 查询需要很长时间 PHP