2011-02-28 110 views
0

我试图执行一个名为csearch.php的脚本,其间隔为60秒。我尝试shell_execexec,但它说,它不能分叉等。我认为最好的方法(因为这是在共享主机上)是通过使用include()连续执行相同的php脚本

include('csearch.php'); 
sleep(60); 
include('csearch.php'); 
sleep(60); 
include('csearch.php'); 
sleep(60); 
include('csearch.php'); 
sleep(60); 
include('csearch.php'); 

csearch.php包含功能等我想知道这是可能的(上面的代码)。如果不是,你可以推荐的最佳方式是什么?谢谢。

编辑,这是我如何与exec做到这一点,失败:

exec('/path/to/php /path/to/csearch.php'); 
+0

你是怎么做你的'exec()'?这是你应该怎么做,它应该工作。另外,你不能'include()'同样的脚本... – Shikiryu 2011-02-28 13:46:00

+1

exec('/ usr/bin/php/path/to/php /path/to/csearch.php'); ? – mailo 2011-02-28 13:48:14

+0

@Shikiryu看到我的编辑。谢谢。 – Ruel 2011-02-28 13:49:06

回答

0

我会采取类似于Berry的建议,但不使用卷曲的方法。

将函数中的代码包装在csearch.php中(例如perform_action)。

require_once('csearch.php'); 

for ($i = 0, $n = 5; $i < $n; $i++) { 
    perform_action(); 

    if ($i < $n - 1) { 
     // Only sleep if you need to 
     sleep(60); 
    } 
} 
1

你为什么想做这个?听起来,你可能需要一个cronjob,或者在你的脚本中犯了一个错误。无论如何,如果脚本可以从“外部”(例如HTTP上的可执行文件)访问,那么您可能需要使用cURL,因为这可以执行您请求的操作。

include('csearch.php'); 

$res = curl_init('http://site.com/csearch.php'); 

while($i < 5) { 
    curl_exec($res); 
    sleep(60); 
    $i ++; 
} 

但严重的是,你实际上需要做的,这是非常渺茫的机会。