Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中运行连续循环的最佳方法是什么,该循环只有在';它还没有运行吗?_Php_Ubuntu_Lamp - Fatal编程技术网

在php中运行连续循环的最佳方法是什么,该循环只有在';它还没有运行吗?

在php中运行连续循环的最佳方法是什么,该循环只有在';它还没有运行吗?,php,ubuntu,lamp,Php,Ubuntu,Lamp,Ubuntu 18.04上的灯组: 我有一个php循环,我想继续运行。据我所知,Apache将为每个正在执行的脚本生成一个线程,并为其提供一个核心,这正是我想要做的:拥有一个不断循环的php脚本,根据需要处理事情 我见过每分钟运行一个cron的方法,它创建一个文件,然后在完成后删除它,但是当脚本需要61秒执行,然后它只是坐在那里不做任何事情59秒时会发生什么。或者如果脚本崩溃并且没有删除文件 在使用错误的方法之前,我想找出正确的方法。检查文件是否存在是一种“确定”的方法。。。您可以使用相同的逻辑

Ubuntu 18.04上的灯组:

我有一个php循环,我想继续运行。据我所知,Apache将为每个正在执行的脚本生成一个线程,并为其提供一个核心,这正是我想要做的:拥有一个不断循环的php脚本,根据需要处理事情

我见过每分钟运行一个cron的方法,它创建一个文件,然后在完成后删除它,但是当脚本需要61秒执行,然后它只是坐在那里不做任何事情59秒时会发生什么。或者如果脚本崩溃并且没有删除文件

在使用错误的方法之前,我想找出正确的方法。

检查文件是否存在是一种“确定”的方法。。。您可以使用相同的逻辑将其替换为某个数据库中的一行


通过检查文件日期(或数据库记录日期)是否早于1分钟,可以避免超时问题。如果是,则最后一个进程无法删除该文件,您可以这样做,然后再次启动该进程。

对我来说,听起来您想使用apache和mod_php重新创建事件驱动模型,这不是为事件驱动模型创建的。
如果您想坚持使用php,我建议您只在控制台中运行php_cli脚本(与Apache无关)(可能作为systemd服务)。当它启动时,应验证它是否尚未启动。或者,您可以使用.lock或.pid文件。

描述您试图用一些无限循环来解决的实际问题。听起来您好像在尝试运行一个长时间运行的轮询脚本,以便在它到达时执行工作。有很多方法可以做到这一点,其中没有一种涉及Apache。最好的选择是使用作业服务器对作业进行排队。我喜欢豆茎,但几乎任何工作队列都足够了。所有长时间运行的作业都应该作为服务在命令行上启动,最好使用pcntl或pthreads扩展。如果您想要一个示例项目,我为Beanstalk编写了以下内容:我想了解更多关于这种方法的信息。我只在apache中使用过php,所以我完全不知道其他可用的选项。有没有教程或初级读物可以让我参考?有一个php cli解释器,它的操作方式与mod_php和fcgi php非常相似。您可以使用
PHP-fscript.PHP
从命令行运行PHP,并使用mod_PHP做几乎所有的事情以及一些额外的事情。更多关于使用PHP作为Posix服务的阅读:这不是一个PHP概念;这就是服务信令在*nix上的工作方式。我已经给了你一个样本项目。