我正在开发一个网站,需要在没有任何请求的服务器上运行php脚本, 它是一个机器人脚本,它保持(不是全天但至少每天一次)检查客户帐户并在发生事件时向客户发送警报消息。
任何想法都表示赞赏。
答案 0 :(得分:8)
假设您需要在linux上执行此操作,您可以从浏览器和CLI运行任何php脚本。
您可以运行一个简单的PHP脚本:
<? echo "Ana are mere"; ?>
php -f ./index.php
注意文件权限,任何可能在代码中出现的错误,内存泄漏或未分配的变量现在都会变得非常明显,因为该过程将持续运行。
如果您不希望它一直在后台运行,请查看crontab(http://unixgeeks.org/security/newbie/unix/cron-1.html)以便能够定期开始工作。
- 编辑 -
查看php execute a background process和PHP: How to return information to a waiting script and continue processing
基本上你想要启动后台进程,你可以通过在你自己的脚本上使用exec()或fsockopen()或file_get_contents()来执行此操作,如果没有访问exec的话,或插座功能。 另请查看http://us2.php.net/manual/en/function.session-write-close.php,以便“后台脚本”不会“阻止”请求和http://us2.php.net/manual/en/function.ignore-user-abort.php
答案 1 :(得分:3)
使用cron作业http://www.cronjobs.org/
您可以无限期地自动调用脚本。如果他们是好人,您的托管服务提供商应该支持他们。
您还应该考虑在页面末尾添加一个唯一的密钥
即。 www.yoursite.com/cronjob.php?key=randomstring
然后只在密钥正确时才运行脚本,以防止机器人和其他用户在您不希望它运行时运行该脚本。
答案 2 :(得分:1)
如果你不能创建一个cron作业,那么创建一个能够满足你想要的页面,并在另一台机器(可能是你的PC上)上创建一个计划任务,这个计划就会在每天的特定时间点亮并点击该页面
这真的是一个黑客,但如果你绝对不能设置一个cron工作,那将是一个选择。
答案 3 :(得分:1)
如Evernoob和Quamis所述,您希望拥有一个cron作业(UNIX / Linux / Mac OS)或一个计划任务(MS Windows)。此外,您可以使用PHP命令行界面(CLI)运行PHP脚本,在这种情况下,您可以调用PHP可执行文件,然后调用脚本名称。作为替代方案,您可以使用wget之类的工具(可在所有平台上使用)来调用PHP脚本,就好像有人在Web浏览器的位置栏中键入了URL一样。
答案 4 :(得分:1)
无法像你想象的那样使用php脚本。因为它是在某个地方发出请求后通过apache执行的。
即使您在脚本中执行while(1),apache / php也会自动停止您的脚本。 回复您的评论,是的,您需要ssh访问才能执行此操作,除非您的Web界面允许您添加cronjob。
也许你可以编写一个可以在另一台服务器上用程序执行的服务并完成这项工作。
答案 5 :(得分:1)