输出消息而不杀死脚本

时间:2012-10-07 12:37:01

标签: php

我正在一个网站上生成用于车辆注册的引脚,我的问题是,当我想要同时生成大量引脚(如50,000个引脚)时,这将需要很长时间才能完成,我想要的是一种在后台生成引脚的方法,同时我的浏览器加载到一个页面,该页面将显示一条消息,说明“你的引脚正在生成”,而不是在显示消息之前等待50,000个引脚生成。我使用PHP和MYSQL。

2 个答案:

答案 0 :(得分:1)

你可以将它分成2页:一个用于生成图钉的php脚本和另一个用于向用户显示消息的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);
?>

Dot忘记在这里下载原型JS:http://www.prototypejs.org/download

我希望有所帮助:D

答案 1 :(得分:0)

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

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