我有一个非常劳动密集型的 PHP 脚本,它对别处的服务器进行多次 api 调用。 我需要运行此脚本以将某些数据保存在我的服务器上,并与远程服务器上的数据同步。
我希望每次特定类型的用户访问特定页面时启动此脚本。
但是,我的问题是,如果合格的用户访问此页面,页面加载时间是 REDONCULOUS,即使脚本处理的数据不会以任何方式影响页面本身。
所以,我想知道的是,如何使用相同的条件运行此脚本,但只在我的服务器上运行它?
换句话说,我怎样才能运行这个脚本并阻止浏览器等待它的输出?
编辑:有用信息:Using XAMPP for Windows, PHP 5.5, Apache 2.4。
编辑 2: 使用 curl 似乎是最佳选择,但它并不想实际运行我的脚本。
调用如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/tool/follow/PriceTableUpdate.php');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
curl_exec($ch);
这是实际的 PriceTableUpdate.php:
<?php
ini_set('max_execution_time', 3600);
$marketData=simplexml_load_file("http://www.eve-markets.net/api/xml?listid=20158key=JKgLjgYvlY6nP");
foreach ($marketData->marketList->type as $type) {
$ItemID = (int)$type['id'];
$ItemBuy = $type->buy->price;
$ItemSell = $type->sell->price;
$ItemMedian = $type->median->price;
mysqli_query($con,"UPDATE piprices SET `ItemBuyPrice` = $ItemBuy, `ItemSellPrice` = $ItemSell, `ItemMedianPrice` =$ItemMedian WHERE `piprices`.`ItemID` = $ItemID");
}
?>
编辑 3: 使用上面的方法确实有效,以防有人想再次问这个问题。 但是你必须记住,因为你使用的是 curl,php 文件不再使用你之前设置的变量,所以你需要在 php 文件中再次定义你的数据库连接。
最佳答案
为什么不在其中使用 AJAX?当页面加载并满足您的特定条件时,向服务器发出 AJAX 请求并启动脚本,而无需等待返回给浏览器的响应。
关于php - 运行没有输出到浏览器的php脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20842208/