当前位置: 首页 > 知识库问答 >
问题:

带有Laravel的PHP无限脚本

高飞翮
2023-03-14

我有一个表用户,我需要不断上传,所以一旦更新,我想直接重新启动命令。

实际上,我使用的是一个cron,它每分钟都会用Laravel启动自己(

我在想也许可以使用一个队列,一旦脚本终止,就重新启动它自己,像这样:

// Do My stuff
Queue::push(new UpdateUsers($));

但是如果脚本崩溃,它不会自己重新加载,我需要至少启动一次。我知道我可以使用pcntl_fork函数,但是我想用Laravel有一个交钥匙函数。我该怎么做?


共有2个答案

许嘉珍
2023-03-14

在某些情况下,我使用了Tzook Bar Noy建议的方法,但也使用了一种稍微丑陋的方法,如果这可能导致问题,可以避免脚本永远循环的问题。这可以在cronjob中每分钟调用一次:

$runForSeconds = 55;
$runMinute = date('i');
do {
    ....code....
} while (date('i') == $runMinute && intval(date('s')) < $runForSeconds);

但最好的解决方案是使用作业队列,并使用监督员和:

command=php artisan queue:listen
郗欣嘉
2023-03-14

我建议在命令位置运行命令命令

while (true)

循环,使其永远运行。创建此脚本后,可以使用supervisord运行它

这个服务运行你告诉他的命令,当它失败时,它会自动重新启动。请注意,在X失败后,它将停止,这取决于您如何配置它。

中的conf文件示例:

/etc/supervisord/conf.d/my_infinite_script.conf

内容可以是:

[program:laravel_queue]
command=php artisan your_command:here
directory=/path/to/laravel
autostart=true
autorestart=true
stderr_logfile=/var/log/your_command.err.log
stdout_logfile=/var/log/your_command.out.log
 类似资料:
  • 我正在做一个拉拉维尔购物网站项目,我对购物车中的产品数量有问题。我对拉雷维尔比较陌生,所以事情对我来说变得更复杂。。。问题是我不能真正有效地循环(并寻找)simular产品。 但是当我按下“添加到购物车”按钮时,这个功能会运行: 产品是对象,我不确定如何循环查找产品的id以匹配数组-产品id。我尝试json_decode()看看这是否会使其成为一个数组,但我在这里可能是错误的,因为当我返回值时,它

  • 这对于注入存储库很有效,但是对于调用任何存储库的任何函数,请返回AutoWireHelper.AutoWire行。 这是我的代码,EntityListener执行autowireHelper.autowire,当涉及到“find”方法时,返回到autowire行: 我的错误: 无法提交JPA事务;嵌套异常为javax.persistence.RollbackException:提交事务时出错12:

  • 我有一个(Laravel)命令。该命令是做卷曲到一个网站,这是某种网站检查。当服务器关闭时,我想回声出来的东西,但它应该只有一次。 我试过这个代码。不起作用。它不断回响。现在我被卡住了。 我知道上面的代码会一直回响。 目标是当函数从返回true并再次返回true时,它将第二次只回响一次,以此类推。 我希望这个信息是明确的。 还有比这更好的解决办法吗?

  • 首先,我不是程序员(只是对PHP有一些了解)。我制作了一个带有事件列表的网站,其中有一个选择字段,每月使用Ajax加载过滤事件。 该代码在大约3个月的时间里运行良好。但5天前,它突然停止工作,开始生成一个无限循环。 我调试了代码,发现问题出在“同时”循环上。我试图理解为什么这在一段时间内是完美的,然后它就不会了。(用无限循环崩溃服务器)。 这个函数只给出下个月的第一天。很好用。 这一个,为选择字段

  • 我用的是Spring Roo 1.2.1和Jackson 1.9.7。在使用json序列化我的类时,我得到了一个JsonMappingException。 我读了以下帖子,但没有找到适合我的工作解决方案: Jackson的无限递归 Jackson-具有双方向关系的实体序列化(避免循环) 我不知道为什么JsonIgnore在属性QueueOuts的类Queue中不起作用。我也尝试了JsonManag