我在很多地方搜索过,并没有找到适合我问题的任何解决方案..我有一个PHP代码需要大约1分钟来检索信息,因为它提取了网址在一个开放的图形PHP,所以它必须打开很多网站,找到元数据(如:标题,图像,描述),并为我回声...所以,整个系统工作正常,但每次一个用户进入网站php代码必须再次检索元数据和东西...
我需要创建一个在后台服务器中运行PHP并存储信息的系统,所以当用户进入网站时,所有的工作都已经完成,只显示结果......任何想法?
我做了这个测试:
等待1分钟后,页面已打开显示结果,我输入了源代码,复制了所有内容并创建了一个新的.html页面(复制并粘贴生成的代码),当然一切都是转换成一个简单的html代码显示php结果...所有的东西都在一秒钟内加载,因为所有的Open Graph过程都已经完成了..这就是我需要的,但是自动...
(英语不是我的主要语言,所以,你知道):)
答案 0 :(得分:2)
将结果添加到数据库或缓存文件中。有一个cron
脚本运行脚本需要很长时间,但修改脚本以将输出保存到文件或数据库。然后,让面向用户的脚本只检索文件/数据库的内容。
答案 1 :(得分:0)
There are many options to do this. Some depend on how you want users to get the information.
1. If you're on Windows, you could try using:
$WShell = new COM("WScript.Shell");
$path = ($_SERVER['DOCUMENT_ROOT']."/long_task.php");
$exec = $WShell->Run("php.exe -f $path", 0, false);
Have the long_task.php update the database or something to let you know you've completed the task and that the user can retrieve the updates.
2. Load the data into an iframe
<!-- Send the data request to the iframe -->
<form action="long_task.php" target="ifr">
...
</form>
<!-- put iframe somewhere on your main page -->
<iframe name="ifr" id="ifr" >
</iframe>
3. Also, you may wish to consider using javascript instead. A jQuery asynchronous request to the long_task.php file can be created using something like:
<!-- HTML code -->
<a href="post_data()">Button</a>
<!-- jquery code -->
function post_data() {
var dataString = $('#data_to_send1, #data_to_send2).serialize();
$.post(url, dataString, function(data) {
//callback details
//use js-jquery to display your data here
});
}
答案 2 :(得分:0)