PHP cURL执行脚本不会';I don’我没有按预期工作

PHP cURL执行脚本不会';I don’我没有按预期工作,php,curl,Php,Curl,功能 function curlPost($url, $postArray = NULL, $timeout=2, $errorReport=FALSE) { # PREPARE THE POST STRING if ($postArray != NULL) { $postString = ''; foreach ($postArray as $key => $val) { $postString .= urlenco

功能

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;
 }
它的工作如预期,但我有大量的成员,所以我不得不使用分页,如

等等

它只是传输第一个结果集,而不用于其他页面。如果我手动执行它,它将重定向到下一页(如果有记录)

现在我该怎么办?我现在完全被卡住了,没有主意了。如果有人能帮我解决这个问题,我会很高兴的

注意:

一切都在同一个领域。没有追踪任何推荐人,没有检查任何cookie。只调用纯PHP页面。如果cURL调用的页面中存在任何分页,我将使用元重定向重定向重定向到下一页

我不想在循环中使用cURL。如果被调用的php页面需要分页,我会在被调用的php页面中添加以下代码

for($i=0;$i<100;$i++){
    $url = 'http://siteurl.com/crons/transfer_members.php?page='.$i;
    $response = curlPost($url, NULL, 10);
    echo ($response) ? "{$url} executed" : "Couldn't execute {$url}";
}
#重定向
回声';
$url = 'http://siteurl.com/crons/transfer_members.php';
$response = curlPost($url, NULL, 10);
echo ($response) ? "{$url} executed" : "Couldn't execute {$url}";
额外信息

我的数据库中有crons表,我使用循环crons表的记录定义
$url
。有些php页面可能有分页,有些没有任何分页。这就是为什么我真的希望避免在循环内部使用cURL调用来分页

如果需要分页,则在被调用的PHP页面中存在分页。如果我在浏览器上访问被调用的页面,它会将我重定向到下一页。当我用cURL调用页面时,我也期望得到同样的结果

意义; 如果我在浏览器上访问,它会使用元重定向将我重定向到下一页(示例:)


我对cURL也有同样的期望。当cURL调用时,它应该遍历下一页,直到所有页面都完成。它只是访问第一个页面并在那里停留。

如果您通过
脚本或
meta
标记将浏览器指向连续页面,浏览器将为您处理该页面,但cURL不会。这里的一个解决方案是对您使用的代码进行快速str_pos,如果找到,再次调用cURL。在循环中执行此操作,并收集所有输出,直到在完成时找不到字符串。

您需要正确模拟。可能有很多原因,

  • siteurl.com
    可能正在跟踪推荐人
  • 您也没有发送正确的请求头。它只是通过的curls默认标题
  • siteurl.com
    可能正在使用Cookie。你也没有处理好这件事
  • 事实上,这完全取决于
    siteurl.com
    如何面对您的请求

    另外,您似乎没有在
    $url>上使用任何分页http://siteurl.com/crons/transfer_members.php';它应该更像


    对于($i=0;$i我只是有一个不同的方法。
    我返回了。如果返回的结果以
    http://或https://
    开头,那么我再次调用
    cURL
    ,直到返回的数据
    完成

    我仍然没有在循环中使用cURL(这会导致其他不想要的结果),但仍然设法使它工作


    特别感谢@Shiplu

    我没有在那里使用,我在
    transfer\u成员中有元重定向。php
    siteurl.com没有跟踪引用者、cookie或任何东西。所有内容都在同一个域中。我试图避免循环cURL调用,我想这是不可能的。@Pixeler为什么你认为这不可能?首先我不知道这是否可行,但我更新了我的问题。如果需要,我在PHP页面中有元重定向,该页面由cURL调用。我不知道如何解释我的目的。我真的不喜欢在循环中循环使用cURL。我只想执行给定的
    $url
    $url来自数据库。一些$url值可能有分页,但有些没有,这就是为什么我不能以这种方式在循环中使用cURL。
    for($i=0;$i<100;$i++){
        $url = 'http://siteurl.com/crons/transfer_members.php?page='.$i;
        $response = curlPost($url, NULL, 10);
        echo ($response) ? "{$url} executed" : "Couldn't execute {$url}";
    }