繁体   English   中英

开发始终运行的PHP脚本

[英]Developing always running PHP script

(我们的服务器基于Linux)

我是一位经验丰富的PHP开发人员,但第一次我将开发一个始终运行并获取一些数据的机器人。

我将以一个简单的( 和示例 )场景来说明我的应用程序。 我有2000个网址,我的应用程序将访问该网址并记录的内容。 此应用程序将在7天24小时内工作。 完成2000个网站后,它将重新开始工作。

但是我需要一些有关服务器的建议。 如您所见,我的应用程序将无限运行,直到我关闭服务器。 我可以这样做这个无限循环

while(true)
{
     APPLICATION CODES HERE
}

但是我认为这对服务器来说是一种邪恶:)是否有可能在服务器端执行类似的操作?

我也认为使用cronjobs,但不适用于我的情况。 因为我的脚本尽快重新开始工作,所以已经完成工作。 我必须“ 在完成工作后 重新开始 ”,而不是“ 每30分钟开始 ”。 因为我不知道,也许获取所有2000个网站,将花费超过30分钟或不到30分钟的时间。

我希望我解释得很好。

我也担心内存使用。 如您所知,垃圾收集器会在每个PHP脚本停止后清除内存。 但是正如我所说,我的应用程序不会在几天(甚至几周)内停止运行。 因此垃圾收集器不会被触发。 我在脚本末尾手动取消设置unset()函数 )所有使用的变量。 够了吗

我需要服务器管理员的一些建议:)

PS。 我正在将其开发为控制台应用程序,而不是Web应用程序。 我可以从命令行执行它。

批处理..将所有站点存储在csv或其他内容中,完成后对其进行标记,然后对所有未标记的站点进行处理,然后对所有标记的站点进行处理..等等。一次只说1或5,启动从cron每分钟的批处理脚本。

甚至不要试图一次处理所有这些错误。任何错误,您都不知道发生了什么。

甚至可以将作业存储在数据库中,存储处理统计信息等。允许进行微调和更好地报告。

您可能会遇到尝试运行无限php脚本的时间限制,即使从命令行也是如此。您的服务器管理员也会讨厌您。 如果您没有正确释放资源,可能会遇到内存限制..用php太容易了。

阅读: http : //www.ibm.com/developerworks/opensource/library/os-php-batch/

您的脚本可以只在列表中运行一次并退出。 这样,PHP所拥有的资源就可以被释放。

然后有一个在无限循环中调用php脚本的shell脚本。

由于php不是为长时间运行的任务而设计的,因此我不确定垃圾回收是否适合该任务。 每次运行后退出都会强制其释放所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM