我想执行一个生成txt文件的exe文件,并在另一个脚本中执行,然后检查是否已创建txt文件。
在xampp中,我只是将test.txt文件拖到以下php脚本dir中,但它似乎无法正常工作,如果我将text.txt添加到dir并启动脚本而不是在添加之前开始,然后第二个回声似乎永远不会发生。
如何让PHP等待文本文件存在然后继续?
set_time_limit(0);
echo "Script began: " . date("d-m-Y h:i:s") . "<br>";
$status = file_exists("test.txt");
while($status != true) {
if ($status == true) {
echo "The file was found: " . date("d-m-Y h:i:s") . "<br>";
break;
}
}
这也不起作用:
set_time_limit(0);
echo "Script began: " . date("d-m-Y h:i:s") . "<br>";
while(!file_exists("test.txt")) {
if (file_exists("test.txt")) {
echo "The file was found: " . date("d-m-Y h:i:s") . "<br>";
break;
}
}
答案 0 :(得分:4)
我相信你有其他保护措施可以确保你没有处于无限循环中。
while(!file_exists('test.txt'));
echo "The file was found: " . date("d-m-Y h:i:s") . "<br>";
会更简单。
无论如何,你的问题在于你的预测试。由于它没有开始,它永远不会重复。你需要的是一个后期测试:
do {
if (file_exists("test.txt")) {
echo "The file was found: " . date("d-m-Y h:i:s") . "<br>";
break;
}
} while(!file_exists("test.txt"));
答案 1 :(得分:2)
我想你应该使用这种方法:
set_time_limit(0);
echo "Script began: " . date("d-m-Y h:i:s") . "<br>";
while (true) {
// we will always check for file existence at least one time
// so if `test.txt` already exists - you will see the message
// if not - script will wait until file appears in a folder
if (file_exists("test.txt")) {
echo "The file was found: " . date("d-m-Y h:i:s") . "<br>";
break;
}
}
答案 2 :(得分:2)
这应该可以正常使用
npm
答案 3 :(得分:0)
简短的实验表明,等待异步文件系统更改(在Apache中使用PHP作为模块)必须在循环中产生控制权。否则,等待的循环次数(例如,要通过unlink()删除文件的循环次数)在很大范围内是随机的。可以通过“ usleep(250000)”完成这种循环内的产生,这将产生控制时间为1/4秒。