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

<?php
// 定义接口URL和日期范围
$apiUrls = [
    'http://baidu.com/ch.php?id=1&data=xxxxx',
    'http://baidu.com/ch.php?id=2&data=xxxx',
    // 添加更多接口URL
];
$startDate = '20230831';
$endDate = '20230902';

// 初始化curl_multi
$multiHandle = curl_multi_init();
$curlHandles = [];

// 循环生成日期与接口ID,并请求接口
for ($date = $startDate; $date <= $endDate; $date = date('Ymd', strtotime($date . '+1 day'))) {
    foreach ($apiUrls as $url) {
        $apiUrl = $url . '&data=' . $date;
        
        // 创建curl句柄
        $curlHandle = curl_init($apiUrl);
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
        
        // 将curl句柄添加到curl_multi中
        curl_multi_add_handle($multiHandle, $curlHandle);
        $curlHandles[] = $curlHandle;
    }
}

// 执行并等待所有请求完成
$running = null;
do {
    curl_multi_exec($multiHandle, $running);
} while ($running > 0);

// 依次处理每个请求的响应
$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 ($curlHandles as $handle) {
    // 获取响应内容
    $response = curl_multi_getcontent($handle);
    $data = json_decode($response, true);
    $channelName = $data[0]['ret_data'][0]['bd_name'];
    
    // 添加channel信息到XML
    $xml .= '<channel id="' . $channelName . '">' . PHP_EOL;
    $xml .= '<display-name lang="zh">' . $channelName . '</display-name>' . PHP_EOL;
    $xml .= '</channel>' . PHP_EOL;
    
    // 添加programme信息到XML
    foreach ($data[0]['ret_data'] as $programme) {
        $xml .= '<programme channel="' . $channelName . '" start="' . str_replace('-', '', $programme['begin_time']) . '00 +0800" stop="' . str_replace('-', '', $programme['end_time']) . '00 +0800">' . PHP_EOL;
        $xml .= '<title lang="zh">' . $programme['desc'] . '</title>' . PHP_EOL;
        $xml .= '</programme>' . PHP_EOL;
    }
}

$xml .= '</tv>';

// 将生成的XML写入文件
file_put_contents('result.xml', $xml);

// 关闭curl句柄和curl_multi句柄
foreach ($curlHandles as $handle) {
    curl_multi_remove_handle($multiHandle, $handle);
    curl_close($handle);
}
curl_multi_close($multiHandle);
?>

此代码将同时请求多个接口,并将每个接口的响应解析为JSON格式。然后,从响应数据中提取所需的信息,并将其添加到生成的XML字符串中。最后,将生成的XML字符串写入名为result.xml的文件中。

请注意,您需要根据实际情况调整接口URL和日期范围。此外,根据接口返回的数据结构,您可能需要调整代码以正确提取所需的信息

请求接口1:httpbaiducomchphpid=1&data=xxxxx得到内容 ret_status 0 ret_msg success ret_data end_time 2023-08-31 005500 begin_time 2023-08-31 00

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

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