php - 运行没有输出到浏览器的php脚本

标签 php server-side

我有一个非常劳动密集型的 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/

相关文章:

mysql - 通过浏览器编辑数据库的优雅方式?

php - 如何限制 MySQL Select 查询结果截止日期

php - PDO 和 MySQL 的这种实现是否安全以防止 SQL 注入(inject)?

java - 需要 Java 等价物才能对 PHP 代码进行 3DES 解密

cookies - 使用 cookie 而不发送到浏览器和文档 header

asp.net - 在服务器端批量打印 PDF 文件

javascript - 服务器端与客户端的 excel 导出

ios - 我应该验证什么自动续订订阅收据?

php - 如何启用我的数据库连接 UTF8

Java Applet的URLConnection到PHP没有效果