在PHP脚本中,是否可以使用不同的GET变量执行另一个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“根本不需要编辑。
发布于 2011-04-26 21:58:23
使用curl http://ru2.php.net/manual/en/book.curl.php
发布于 2011-04-26 22:25:40
我将从我的脚本中复制并粘贴,在我的框架中运行一些机器人;
# 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;
}这段代码允许我使用CURL执行脚本,然后运行另一个机器人。
你可以循环第一段代码(在函数之上),这样你就可以运行多个(&不同的) php脚本,而不需要等待响应(或者你也可以等待)。
我希望这能帮到你。
https://stackoverflow.com/questions/5791404
复制相似问题