Python:自动刷新本地PHP文件

时间:2011-10-31 13:31:09

标签: php python

我试图在我的服务器上执行一个基本脚本,通过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会话,它会继续运行吗?

4 个答案:

答案 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”将脚本作为“背景”启动 - 轻松操作。