apache php 脚本,关于apache:如何保持持久的PHP脚本运行?

我有一个PHP脚本,用于监听传入的套接字请求等。我需要这个脚本在服务器上持续运行(它在无限循环中运行)。

如何启动和管理此流程?我试着通过ssh/putty启动它,但是一旦ssh连接超时,脚本就会消失。

作为守护进程运行php脚本的可能副本

很多好信息:stackoverflow.com/search?Q= PHP+守护进程

检查"screen"实用程序,将会话与ssh分离(如果需要,稍后再重新连接)。

如果您有一个长期运行的PHP脚本作为解决方案,那么您要么有一个学术问题、一组奇怪的情况,要么正在寻找更好的解决方案。回到主题,在抽象的层次上,您需要一些东西来管理您的PHP进程,以便在死亡、OOM、月亮移动对齐等情况下重新启动它(这个管理器不应该是另一个PHP脚本):-)

myscript.php &

这将在后台运行脚本

你可以查一下

ps aux | grep myscript.php

正如Patrick在下面的注释中提到的,从命令行运行PHP脚本没有最长的执行时间。myscript.php将无限期运行。

你可以用set_time_limit覆盖它。

从命令行运行时没有时间限制

@帕特里克很高兴知道!

这并不是真正稳定的,因为脚本可能会因错误或内存泄漏而死亡,并且不会再次启动。

这对我来说是可行的,但是在重新启动服务器之后,我需要手动设置,在自动重新启动服务器脚本之后,还有什么方法可以设置吗?

我们最近也有类似的需求。我们正在运行一个Ubuntu14.04LTS服务器,因此创建了一个upstart进程,以在引导时启动该进程,并在该进程因任何原因退出时重新启动。

它对我们来说非常好,包括自动重启;我们长期运行的过程最终会断开MySQL连接。在upstart进程自动重新启动进程之前,脚本处理异常并退出。我们还添加了一个cron脚本来监视进程,以防出现更大的错误,而upstart放弃尝试重新启动;如果简单的重新启动无法纠正先前的错误,我们将提供故障保护。

这也是我的第一选择。

您好@kdrewske您能提供任何代码示例或其他可以帮助寻找相同问题的人的东西吗?我是其中之一。)

@Pankajjha-我刚刚搜索了"Ubuntu新贵的例子",从Digitial Ocean得到了一个很好的向导。digitalOcean.com/community/tutorials/…。它讨论的远不止我的示例所能提供的。它执行的PHP脚本只是可以通过cli调用的东西,只需在while循环中包含一个代码。

@Kdrewske非常感谢你的帮助,谢谢,这正是我需要的。我还查阅了一些类似的教程,我发现最好的一个是这个链接,我希望它能帮助一些人,就像它帮助了我一样。

如果使用ignore_user_abort()并设置_time_limit(),则可以使用浏览器。

通过ssh在后台运行脚本,如下所述:让ssh在目标计算机的后台执行命令

然后我建议您有一种方法来监视脚本是否仍在运行。您提到过您的脚本在端口上监听,您可以编写一个脚本,每隔一段时间检查一次,看看端口是否仍然打开。

另一个选项是监视进程ID。当脚本第一次执行时,可以使用getmypid函数获取进程ID并将其存储在文件中。然后,您可以使用ps -p 1234定期检查它是否仍在运行。

另一个解决方案:如何检查PHP脚本是否仍在运行

如果长期运行的可靠性是目标,那么,监工是完美的!

我通过https://lornajane.net/posts/2012/watch-over-long-running-processes-with-supervisor找到了它。

编辑:此工具的目的是解决所述问题。规定的目标是使长期运行的过程保持运行。一条评论指出(有效地)当前接受的解决方案将不可靠,因为脚本可能崩溃等。因此,解决方案是使用一个工具"启动和管理这个过程",这也保持了它的活力。这个工具就是这样做的:它在后台启动进程并使其保持运行。

您可以运行它的命令行。您必须添加一个"在后台运行"修饰符,这样系统就不会等待脚本完成。基本上,您在命令行的末尾放了一个&符号。

您必须做的一件事是创建一个在启动时运行PHP脚本的ini shell脚本,以防重新启动。

为什么不做一个do while循环呢?do { /* your code */ } while $something == 0;

然后,当有什么事情触发脚本停止时,将$something设置为0以外的值。

我认为$something = 0;是一个任务,不是一个对/错的测试。但是我相信你知道……另一件事是,如果你把任何东西建立在循环场景上,除非你的逻辑(脚本/函数…无论如何)阻塞某些东西——任何"空闲"的循环都不会是空闲的,但会使服务器CPU紧张,浪费宝贵的资源在服务器范围或至少虚拟服务器范围内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值