以下是使用php curl_multi_init同时请求全部接口并生成xml文件的示例代码:

<?php

// 请求接口的日期
$date = '20230831';

// 接口列表
$urls = [
    'http://baidu.com/ch1.php?data=' . $date,
    'http://baidu.com/ch2.php?data=' . $date,
    // 其他接口
];

// 初始化curl_multi
$mh = curl_multi_init();

// 创建并添加curl句柄到curl_multi
$chList = [];
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $chList[] = $ch;
}

// 执行curl并等待所有请求完成
$active = null;
do {
    $status = curl_multi_exec($mh, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);

// 获取接口请求结果
$results = [];
foreach ($chList as $ch) {
    $results[] = curl_multi_getcontent($ch);
    curl_multi_remove_handle($mh, $ch);
}

// 关闭curl_multi
curl_multi_close($mh);

// 解析接口结果并生成xml
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
$xml .= '<!DOCTYPE tv SYSTEM "http://xmltv.cvs.sourceforge.net/viewvc/xmltv/xmltv/xmltv.dtd">' . PHP_EOL;
$xml .= '<tv generator-info-name="Sage" generator-info-url="https://github.com/OpenAI/gpt/blob/main/samples/dialogue.py">' . PHP_EOL;

foreach ($results as $result) {
    $data = json_decode($result, true);
    if ($data && isset($data[0]['ret_data'])) {
        foreach ($data[0]['ret_data'] as $item) {
            $xml .= '<channel id="' . $item['bd_name'] . '">' . PHP_EOL;
            $xml .= '<display-name lang="zh">' . $item['bd_name'] . '</display-name>' . PHP_EOL;
            $xml .= '</channel>' . PHP_EOL;
            $xml .= '<programme channel="' . $item['bd_name'] . '" start="' . str_replace('-', '', $item['begin_time']) . '0000 +0800" stop="' . str_replace('-', '', $item['end_time']) . '0000 +0800">' . PHP_EOL;
            $xml .= '<title lang="zh">' . $item['desc'] . '</title>' . PHP_EOL;
            $xml .= '</programme>' . PHP_EOL;
        }
    }
}

$xml .= '</tv>';

// 将xml写入文件
file_put_contents('output.xml', $xml);

?>

请注意,以上代码中的接口请求部分使用了示例接口地址,并未实际请求接口。你需要根据实际情况修改接口地址和请求参数。同时,解析接口结果部分的代码根据接口返回的数据结构进行了简单的处理,你可能需要根据实际情况进行修改。最后生成的xml文件名为output.xml。

使用PHP curl_multi_init 同时请求多个接口并生成 XML 文件

原文地址: https://www.cveoy.top/t/topic/qAw0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录