同时执行脚本if-else问题

发布于 2024-11-26 08:54:45 字数 1052 浏览 2 评论 0原文

我目前无法使用flock(服务器限制),因此我正在创建一个替代文件锁定系统。这是我的代码。

$dir = "C:\\wamp\\www\\test\\";
$files = scandir($dir);

for($i=0; $i<count($files); $i++) 
{   
    if(substr(strrchr($files[$i],'.csv'),-4) == '.csv')
    {           
        echo "File ".$files[$i]." is a csv"."</br>";
        if (file_exists("$dir$files[$i].lock"))
        {
            echo $files[$i]." has lock in place"."</br>";
            $i++;
        }
        else
        {
            if($file_handle = fopen("$dir$files[$i]", "rb"))
            {
                $file_lock_handle = fopen("$dir$files[$i].lock", "w");
                echo "Setting Lock"."</br>";

                //Do Logic

                fclose($file_handle);
                fclose($file_lock_handle);          

                sleep(3);
                unlink("$dir$files[$i].lock");
            }       
        }
    }
    else
    {
        //Do nothing
    }   
}

如果我并排运行这些脚本。它会等待第一个脚本完成,然后再执行第二个脚本。我怎样才能同时运行它们?即如果存在锁,我希望它跳过该文件并转到下一个文件。

I can't use flock at the moment(server restrictions) so I am creating a alternative file lock system. Here is my code.

$dir = "C:\\wamp\\www\\test\\";
$files = scandir($dir);

for($i=0; $i<count($files); $i++) 
{   
    if(substr(strrchr($files[$i],'.csv'),-4) == '.csv')
    {           
        echo "File ".$files[$i]." is a csv"."</br>";
        if (file_exists("$dir$files[$i].lock"))
        {
            echo $files[$i]." has lock in place"."</br>";
            $i++;
        }
        else
        {
            if($file_handle = fopen("$dir$files[$i]", "rb"))
            {
                $file_lock_handle = fopen("$dir$files[$i].lock", "w");
                echo "Setting Lock"."</br>";

                //Do Logic

                fclose($file_handle);
                fclose($file_lock_handle);          

                sleep(3);
                unlink("$dir$files[$i].lock");
            }       
        }
    }
    else
    {
        //Do nothing
    }   
}

If I run these scripts side by side. It waits for the first script to be finished before it executes the second one. How can I run them concurrently? i.e. If a lock exists I want it to skip that file and go the the next one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文