首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php -从php执行其他几个php脚本

php -从php执行其他几个php脚本
EN

Stack Overflow用户
提问于 2011-04-26 21:55:37
回答 2查看 254关注 0票数 0

在PHP脚本中,是否可以使用不同的GET变量执行另一个PHP脚本?

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

代码语言:javascript
复制
// 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“根本不需要编辑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-26 21:58:23

使用curl http://ru2.php.net/manual/en/book.curl.php

票数 3
EN

Stack Overflow用户

发布于 2011-04-26 22:25:40

我将从我的脚本中复制并粘贴,在我的框架中运行一些机器人;

代码语言:javascript
复制
# 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函数

代码语言:javascript
复制
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脚本,而不需要等待响应(或者你也可以等待)。

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5791404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档