2012-10-07 33 views
1

我正在生成用于车辆注册的引脚的网站,我的问题在于,当我想要一次生成很多像50,000针脚的引脚时,需要很长时间才能完成,我想要的是在浏览器加载到页面时生成背景中的引脚的方法,该页面将显示“正在生成引脚”消息,而不是等待50,000个引脚生成在显示消息之前。我正在使用PHP和MYSQL。输出消息而不会终止脚本

+2

我不认为一个网站是专业每种方式来做到这一点。我宁愿在更专门的应用程序中执行此操作,或者只是在cron作业中调用的php脚本。该网站可以调查工作是否准备就绪。 – GolezTrol

+0

好的谢谢你的回应,但我的虚拟主机服务器的cron工作并不是每秒都运行,而是每分钟运行一次。 – KelvinROLEX

回答

0

你想使用的是一个任务守护进程。然后,您只需开始一项任务并获取一个唯一的ID,然后您可以在“请稍候...”页面上使用该ID来轮询结果是否可用(当然,轮询不是最干净的解决方案,而是最简单的解决方案)。

似乎有一个PHP client for celery;但是你仍然需要用Python编写实际任务的代码。也许还有纯PHP解决方案。

1

您可以将其分成2页:一个用于生成脚位的php脚本,另一个用于向用户显示该信息。

这是为了显示消息到用户的方法:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript" src="prototype.js"></script> 
<script language="javascript"> 
function GeneratePINS(quantity) 
{ 
    var myAjax = new Ajax.Updater('pinsAjax','generate_pins.php?quantity='+quantity, 
    { 
     method : 'get', 
    }) ; 
} 

} 
</script> 

</head> 

<body onload="GeneratePINS(5000);"> 
Generating pins... 
</body> 
</html> 

和你generate_pins.php应该是这样的:

<?php 
$DEFAULT_VALUE = 100; 
$quantity = (isset($_GET['quantity']) && is_numeric($_GET['quantity'])) ? $_GET['quantity'] : $DEFAULT_VALUE; 

echo YOUR_METHOD_TO_GENERATE_PINS(quantity); 
?> 

点忘了这里下载原型JS:http://www.prototypejs.org/download

我希望有帮助:D