1

私は、車両の登録に使用されるピンを生成する Web サイトに取り組んでいます。ここでの問題は、一度に 50,000 個のピンのような多くのピンを生成したい場合、完了するまでに非常に長い時間がかかることです。欲しいのは、メッセージを表示する前に 50,000 個のピンが生成されるのを待つのではなく、「ピンが生成されています」というメッセージを表示するページにブラウザが読み込まれている間、バックグラウンドでピンを生成する方法です。PHP と MYSQL を使用しています。

4

2 に答える 2

1

これを 2 つのページに分割できます。ピンを生成する 1 つの 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);
?>

ここでプロトタイプ JS をダウンロードすることを忘れないでください: http://www.prototypejs.org/download

私はそれが役立つことを願っています:D

于 2012-10-07T13:06:27.933 に答える
0

使いたいのはタスクデーモンです。次に、単にタスクを開始して一意の ID を取得し、「お待ちください..」ページで結果が利用可能かどうかをポーリングするために使用できます (もちろん、ポーリングは最もクリーンなソリューションではありませんが、最も簡単なソリューションです)。

セロリ用の PHP クライアントがあるようです。ただし、実際のタスクのコードは Python で記述する必要があります。純粋な PHP ソリューションも利用できるかもしれません。

于 2012-10-07T12:51:07.363 に答える