2011-04-26 72 views
0

其他几个的PHP脚本从PHP脚本,才有可能执行另一个PHP脚本与不同的GET变量?PHP - 执行从PHP

我有一个脚本,基本上是这样的(伪代码):

// GENERATE STUFF 
$ids = fetch_from_database(); 

foreach($ids as $id) 
{ 
    $command = "wget http://someserver.com/php_script.php?id=$id > output_$id"; 
    exec($command); 
} 

由于多种原因,我需要摆脱wget的,而做到这一点本地。没有wget,达到上述目的的最佳方法是什么?

我试过include,但它不喜欢,同样的文件被包含两次或东西。 Exec不能采取$_GET变量。

优选地,“php_script”不应该在所有要被编辑。

回答

1

我会从我的脚本,我正在我的框架一些机器人用它复制粘贴&;

# Executing The Script 
$data = array(); 
$data['start'] = 0; 
$data['end'] = 20; 

$url = SITE_ROOT.CRONS_DIR.$found->path."/".$found->name.".php"; 

$response = curlPost($url,$data,3,TRUE); 

if ($response){ 
echo "<pre>"; 
echo htmlentities($response); 
} 

curlPost功能

function curlPost($url, $postArray = NULL, $timeout=2, $errorReport=FALSE) { 
    # PREPARE THE POST STRING 
    if ($postArray != NULL) { 
     $postString = ''; 
     foreach ($postArray as $key => $val) { 
      $postString .= urlencode($key) . '=' . urlencode($val) . '&'; 
     } 
     $postString = rtrim($postString, '&'); 
    } 

    # PREPARE THE CURL CALL 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL,   $url  ); 
    curl_setopt($curl, CURLOPT_HEADER,   FALSE  ); 
    curl_setopt($curl, CURLOPT_POST,   TRUE  ); 
    ($postArray != NULL) ? curl_setopt($curl, CURLOPT_POSTFIELDS,  $postString) : ''; 
    curl_setopt($curl, CURLOPT_TIMEOUT,  $timeout ); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE  ); 

    # EXECUTE THE CURL CALL 
    $htm = curl_exec($curl); 
    $err = curl_errno($curl); 
    $inf = curl_getinfo($curl); 

    # ON FAILURE 
    if (!$htm) { 
     # PROCESS ERRORS HERE 
     if ($errorReport) { 
      echo "CURL FAIL: {$url} TIMEOUT={$timeout}, CURL_ERRNO={$err}"; 
      echo "<pre>\n"; 
      var_dump($inf); 
      echo "</pre>\n"; 
      createLog("CURL FAIL: {$url} TIMEOUT={$timeout}, CURL_ERRNO={$err}"); 
     } 
     curl_close($curl); 
     return FALSE; 
    } 

    # ON SUCCESS 
    curl_close($curl); 
    return $htm; 
} 

此代码可以让我的卷曲度来执行脚本,并移动到运行的另一个机器人。

您可以循环第一个代码(函数上方),以便您可以运行多个(不同的)PHP脚本而不必等待响应(或者您可以等待)。

我希望这会有所帮助。