您可以使用以下 PHP 代码来同时请求多个接口,并生成 XML 文件:

<?php

$urls = array(
    'http://baidu.com/ch1.php',
    'http://baidu.com/ch2.php',
    // Add more URLs for other interfaces
);

$curlHandles = array();
$curlMultiHandle = curl_multi_init();
$xmlData = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
$xmlData .= '<!DOCTYPE tv SYSTEM "http://xmltv.cvs.sourceforge.net/viewvc/xmltv/xmltv/xmltv.dtd">' . PHP_EOL;
$xmlData .= '<tv generator-info-name="Sage" generator-info-url="https://github.com/OpenAI/gpt/blob/main/samples/dialogue.py">' . PHP_EOL;

foreach ($urls as $key => $url) {
    $curlHandles[$key] = curl_init($url);
    curl_setopt($curlHandles[$key], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curlHandles[$key], CURLOPT_ENCODING, '');
    curl_multi_add_handle($curlMultiHandle, $curlHandles[$key]);
}

do {
    $status = curl_multi_exec($curlMultiHandle, $active);
    if ($active) {
        curl_multi_select($curlMultiHandle);
    }
} while ($active && $status == CURLM_OK);

foreach ($curlHandles as $key => $curlHandle) {
    $response = curl_multi_getcontent($curlHandle);
    $data = json_decode($response, true);

    foreach ($data[0]['ret_data'] as $item) {
        $channelId = $item['bd_name'];
        $startDateTime = date('YmdHis', strtotime($item['begin_time']));
        $stopDateTime = date('YmdHis', strtotime($item['end_time']));
        $title = $item['desc'];

        $xmlData .= '<channel id="' . $channelId . '">' . PHP_EOL;
        $xmlData .= '    <display-name lang="zh">' . $channelId . '</display-name>' . PHP_EOL;
        $xmlData .= '</channel>' . PHP_EOL;
        $xmlData .= '<programme channel="' . $channelId . '" start="' . $startDateTime . ' +0800" stop="' . $stopDateTime . ' +0800">' . PHP_EOL;
        $xmlData .= '    <title lang="zh">' . $title . '</title>' . PHP_EOL;
        $xmlData .= '</programme>' . PHP_EOL;
    }

    curl_multi_remove_handle($curlMultiHandle, $curlHandle);
    curl_close($curlHandle);
}

curl_multi_close($curlMultiHandle);

$xmlData .= '</tv>';

file_put_contents('output.xml', $xmlData);

?>

此代码将同时请求给定的接口 URL,并从每个接口的响应中提取所需的数据,然后将其添加到 XML 字符串中。生成的 XML 字符串最后将保存为名为"output.xml"的文件。

请注意,您需要根据实际情况更改接口 URL 和 XML 生成的逻辑。此示例代码只包含了两个接口的请求和生成 XML 的示例。您需要根据实际情况添加更多的接口 URL 和相应的数据处理逻辑。

同时,您需要确保服务器上的 PHP 配置已启用 cURL 扩展。

使用 PHP 多线程请求接口生成 XML 文件

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

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