使用 PHP 多线程请求接口生成 XML 文件
您可以使用以下 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 扩展。
原文地址: https://www.cveoy.top/t/topic/qAwC 著作权归作者所有。请勿转载和采集!