由cURL远程调用的php while循环失败

时间:2015-04-10 05:51:18

标签: php curl

长期用户,首次发布海报,感谢您的耐心等待!

当通过cURL远程调用时,此PHP代码失败,除非我注释掉while循环,这当然会破坏代码读取文件的目的。 fgets对我来说是正确的文件阅读工具,因为该文件包含以换行符结尾的文本行。

(我使用$readWorks创建了一个稍微笨拙的构造,以帮助组合while和if子句,并在while循环被注释掉时启用代码。)

<?php
define( "IPDIRFILE", "path/to/ipfile.csv" ); // Lookup in standard file location as with local lookups
$readWorks = true;
$ipLookup = fopen( IPDIRFILE, "r" );
if ($ipLookup) {
//  while ( $readWorks ) { // Uncomment this loop to produce failure
    if (($ipline = fgets( $ipLookup )) !== false) {
        echo "Got the line with fgets: " . $ipline . "<br>";
    } else {
        echo "Can't fgets the line<br>";
        $readWorks = false;
    }
}
//} // Ending brace

fclose( $ipLookup );

?>

这是调用php代码:

<?php
$varString = null;

$pgtCon = curl_init( 'http://domain/path/to/ipfinder.php' );
curl_setopt( $pgtCon, CURLOPT_CONNECTTIMEOUT, 30 );
curl_setopt( $pgtCon, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" );
curl_setopt( $pgtCon, CURLOPT_POST, true );
curl_setopt( $pgtCon, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $pgtCon, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $pgtCon, CURLOPT_FOLLOWLOCATION, 1 );

// The content immediately below merely provides something to POST
$ipGeolocRequest = array();
// IP addresses pushed to $ipGeolocRequest

foreach ( $ipGeolocRequest as $ipIdx => $ipVal ) { // construct POST data
    $varString .= $ipIdx . "=" . $ipVal . "&";
}
$varString = substr($varString, 0, -1); // remove trailing ampersand

if (curl_setopt( $pgtCon, CURLOPT_POSTFIELDS, $varString )) {
    $geoData = curl_exec( $pgtCon );
} else {
    echo "Option set failed<br>";
}
curl_close( $pgtCon );

unset( $varString );

echo $geoData . "<br>";

?>

在其他帖子中,我确保在cURL电话后取消设置POST字符串。当通过浏览器地址栏在本地调用时,顶部远程调用的代码可以使用或不使用while循环。这表明,我认为该文件打开并正确读取,并且该脚本可以正常运行。

我是cURL的全新人物,所以我确定我错过了一些东西! (当你错过一些明显的东西时,它也闻到了我的味道; - )

为什么这个cURL调用导致php while循环失败?

0 个答案:

没有答案