首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP脚本自行运行,并复制文件处理程序

PHP脚本自行运行,并复制文件处理程序
EN

Stack Overflow用户
提问于 2016-09-15 04:25:33
回答 1查看 60关注 0票数 0

我有收集一些数据的PHP脚本。几秒钟后,此脚本使用exec()命令调用自身,再次收集数据。由于某些原因,我真的不能在这里使用CRON。该脚本如下所示:

代码语言:javascript
运行
复制
<?php
$fh = fopen('log.txt', 'a');
fwrite($fh, 'Collecting data...');

// wait some time and run itself to collect data again
exec('(sleep 15 && php collect.php) > /dev/null 2>&1 &');

fwrite($fh, 'Data collected.');
fclose($fh);

它正常工作,但有一个问题是我两天多的工作都解决不了的……

如您所见,在脚本的引导下,我使用fopen()函数设置了日志编写器。问题是,当脚本计划使用exec()函数再次运行时,打开的日志文件也会在此脚本的下一次运行中打开!这对我来说很奇怪,但看起来exec()函数正在传递文件处理程序,但这可能吗?

这个问题很严重,因为一段时间后,我可以在我的服务器上看到许多相同的文件被一个进程打开:

如果可以的话,请帮帮我。我试了所有的方法都没有效果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-15 04:36:13

如果您正在递归地调用脚本(如果您发布的脚本是collect.php脚本),那么您可能希望在关闭文件句柄后运行exec命令,如下所示:

代码语言:javascript
运行
复制
<?php
$fh = fopen('log.txt', 'a');
fwrite($fh, 'Collecting data...');
// do stuff
fwrite($fh, 'Data collected.');
fclose($fh);
// wait some time and run itself to collect data again
exec('(sleep 15 && php collect.php) > /dev/null 2>&1 &');
?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39499089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档