1

我正在开发一个生成用于车辆注册的图钉的网站,我的问题是,当我想一次生成很多图钉(如 50,000 个图钉)时,这将需要很长时间才能完成,我该怎么做want 是一种在我的浏览器加载到一个页面时在后台生成 pin 的方法,该页面将显示一条消息说“您的 pin 正在生成”,而不是在显示消息之前等待 50,000 个 pin 生成。我正在使用 PHP 和 MYSQL。

4

2 回答 2

1

您可以将其拆分为 2 页:一个 php 脚本用于生成您的 pin,另一个用于向您的用户显示消息。

这是一种向用户显示消息的方法:

<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

于 2012-10-07T13:06:27.933 回答
0

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

celery似乎有一个PHP 客户端;但是您仍然需要用 Python 编写实际任务的代码。也许也有可用的纯 PHP 解决方案。

于 2012-10-07T12:51:07.363 回答