我试图在我的服务器上执行一个基本脚本,通过Python每45秒自动运行一个PHP脚本:
import os
import time
while(1):
os.spawnl(os.P_NOWAIT, "twitter_clean.php")
print "checked twitter"
time.sleep(45)
PHP正在检查twitter,处理一些值并将它们添加到数据库中。该脚本似乎循环正常,但似乎没有调用/执行PHP ... os.spawnl(os.P_NOWAIT, "twitter_clean.php")
正确的命令?
另外,一旦我通过终端执行Python,如果我关闭与服务器的SSH会话,它会继续运行吗?
答案 0 :(得分:2)
您应该调用PHP-Cli将该文件作为参数
传递import os
import time
while(1):
os.spawnl(os.P_NOWAIT, "/path/to/php-cli twitter_clean.php")
print "checked twitter"
time.sleep(45)
为了让它继续运行,请尝试将其设为守护程序:How do you create a daemon in Python?
答案 1 :(得分:1)
为什么不直接使用crontab呢?让它每45秒运行一次会有点困难,但是如果你愿意去1分钟或30秒,那么你应该能够比使用python脚本更简单。
答案 2 :(得分:1)
要在关闭会话后保持运行使用nohup,但如果这不仅仅是临时情况,你需要使用cron来调用php(如Jeff Day所说)或自动启动Python,试试看着:man chkconfig
答案 3 :(得分:0)
您可以尝试仅使用PHP解决此问题。看看“tick”功能:
http://de.php.net/manual/en/function.register-tick-function.php
http://de.php.net/manual/en/control-structures.declare.php#control-structures.declare.ticks
您可以注册一个滴答功能。您可以编写代码,仅在注册函数中每45秒执行一次该函数。我认为这将更容易,你也可以更容易实现一个功能,这将阻止多次执行该功能(如果45秒不足以执行它)。
您可以使用命令“nohup”将脚本作为“背景”启动 - 轻松操作。