【发布时间】:2017-06-17 17:19:31
【问题描述】:
我正在尝试使用 cURL 构建各种监视器来跟踪各种不同的仪表板。这个想法是我加载了一堆我想从数据库中查看的 URL,在浏览器窗口上运行此代码后,我会在有限的时间内显示这些 URL(例如,我会显示 www.dashboard .zopim.com 10 秒,然后它转到另一个不同的 URL 30 秒,以此类推,当它结束时,它又重新开始)。
<?php
include_once('connection.php');
$query = "SELECT url, time FROM $tb ORDER BY position";
$result = mysqli_query($connection_, $query);
$rowcount = mysqli_num_rows($result);
$curl_handle = curl_init();
$data = array();
//base array building
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
$data_b = array();
$data_b['curl_handle'] = $curl_handle;
$data_b['url'] = $row[0];
$data_b['time'] = $row[1];
array_push($data, $data_b);
}
for ($i=0; $i < $rowcount; $i++) {
$ch = $data[$i]['curl_handle'];
curl_setopt($ch, CURLOPT_URL, $data[$i]['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$grab = curl_exec($ch);
usleep($data[$i]['time']*100);
curl_close($ch);
return $grab;
}
?>
问题是我什至无法让它开始运行。就像现在一样,它只是加载第一页并保留在那里。
另外,作为一个评论,由于我对整个 cURL 很不熟悉,有没有更好的方法来做到这一点?我读到有一个多功能功能可以让我异步加载多个 URL,但我不确定它是否能满足我的需求。
【问题讨论】:
-
我认为其中大部分将不得不依赖于某种类型的 JS。
-
我不允许直接篡改服务器或任何类似的东西,所以它必须限于代码本身。愿意分享建议吗?
-
我认为您最好的选择是将所有 URL 一次推送到您的 JS,并设置 IFRAME 来显示该站点,并让 JS 刷新
-
遗憾的是,我已经尝试过 iframe 方法,但效果不佳,因为 iframe 被阻止,让我回到原点。