带有while循环的php多个curl url

标签 php url curl while-loop do-while

我正在开发一个小脚本,我对使用几个 curl 和 while 循环有点困惑。

我想在其中一个 URL 给我信息时停止处理 curl。注意:我有多个 curl 请求。

所以我的想法是,

我有几个 URLS,我必须处理它们并从中获取信息。如果在特定 URL 上找到信息,它将给我一个字符串。如果找不到任何信息,它将不会给我任何值(value)。所以我大约有将近 10 个 URL 需要处理。在所有情况下,任何一个 URL 都会给我信息,因此其余的 URL 将不会产生任何值(value)。由于处理了很多 URL,延迟是一个问题。所以假设在下面的示例代码中,如果以 value2.php 结尾的 url 给我一个结果,那么我立即想停止处理其他 url。因为我已经得到了结果并且没有必要运行其他 curl 。最后我必须打印结果。

此外,我还有一个条件,即所有 URL 都不会产生任何结果,如果有人向我展示如何处理该问题,那就太好了。

我的示例代码。

<?php
///functions here
do {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value1.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value2.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value3.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value4.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value5.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value6.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value7.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value8.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value9.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"example[dot]com/value10.php?process=$param");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$combined = curl_exec ($ch);
curl_close ($ch);

} while (strlen($combined) != 0);
echo $combied;

///functions here

?>

最佳答案

尝试以下操作:

<?php

function callCURL($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $combined = curl_exec ($ch);
    curl_close ($ch);
    return $combined;
}


function getResult($urls) {
    $return = array();

    foreach ($urls as $url) {
        $response = callCURL($url);
        if (strlen($response) !== 0) {
            $return[] = $response;
            break;
        }
    }
    return $return;
}

$urls = array("example.com/value1.php?process=$param", "example.com/value2.php?process=$param", "example.com/value3.php?process=$param")

$result = getResult($urls);

关于带有while循环的php多个curl url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36406463/

相关文章:

php - 跨 2 个表的 Mysql SQL 查询 - 不确定如何正确执行

java - XML RPC 服务器(PHP、Drupal)与客户端(Java)在长整数上不兼容

Java URL 编码 : URLEncoder vs. URI

regex - 是否有仅包含小写字母数字字符和连字符的字符串的名称?

php - 获取 URL 查询字符串参数

javascript - 使用jquery获取URL内容

无法在 Ubuntu 中使用 Codeblocks IDE 编译 libcurl

php - 多数据库还是单数据库?

java - REST API 设计在同一请求中向 api 发送 JSON 数据和文件

PHP json_encode - 以字符串形式返回的 null 和 int 值