私はこれに少し慣れていないので、ご容赦ください。フォームが送信された後に別のページを呼び出すページがあります。新しいページには、ページが表示される前に実行される長い php ループが含まれています。問題は、ループが終了する前にサーバーが 500 エラーを送信することです。GoDaddy とエコノミー共有 Linux ホスティングを使用していますが、エラー ログへのアクセスが許可されていません。メモリの問題ではないと確信しています。Apacheが単にタイムアウトしていると思われます。ループを短くして問題なく動作するので、コードに問題はないと確信していますが、ループをより適切にコーディングするためのトリックがあるかどうか、または apache をだましてループにもっと時間を与えるためのトリックがあるかどうかを知りたいです。またはこれを機能させるためのもの。事前に感謝します。コードは次のとおりです。
ループ開始前のいくつかの変数:
$usernum1 = $_POST['num1'];
$usernum2 = $_POST['num2'];
$usernum3 = $_POST['num3'];
$usernum4 = $_POST['num4'];
$usernum5 = $_POST['num5'];
$usernum6 = $_POST['num6'];
$usernum7 = $_POST['num7'];
$usernumbers = array($usernum1, $usernum2,
$usernum3, $usernum4,
$usernum5, $usernum6,
$usernum7);
sort($usernumbers, SORT_NUMERIC);
$i = 0;
$counter = 0;
set_time_limit(0);
$input = range(1, 49);
ループは次のとおりです。
do {
$rand_keys = array_rand($input, 7);
sort($rand_keys, SORT_NUMERIC);
if ($input[$rand_keys[0]] == $usernumbers[0] &&
$input[$rand_keys[1]] == $usernumbers[1] &&
$input[$rand_keys[2]] == $usernumbers[2] &&
$input[$rand_keys[3]] == $usernumbers[3] &&
$input[$rand_keys[4]] == $usernumbers[4] &&
$input[$rand_keys[5]] == $usernumbers[5] &&
$input[$rand_keys[6]] == $usernumbers[6])
{
$i = 1;
}
$counter = $counter + 1;
} while ($i == 0);
$i == 1 のときにループが終了し、すべての数字が一致すると $i に 1 が割り当てられることがわかります。サーバー上の php5.ini ファイルに max_execution_time = 1000 を追加したことにも言及する必要があります。phpinfo を確認すると、有効になっているようです。以上です!それほど複雑ではありません。誰かが私にいくつかのトリックまたはより良い方法を理解するのを手伝ってくれるなら、助けてください.
終了するまでにもっと時間がかかるようにループが必要です。よろしくお願いします:-)
編集: スクリプトの動作を確認したい人のために、6 つの番号しかなく、当選しやすく、タイムアウトしない宝くじを用意しています。ここに移動して、必ず一番上のオプション (ロト 649) を選択してください。http://diablogosse.com/test/lottosims.php
EDIT2:これがひどく出くわした場合は申し訳ありませんが、かなりの数の投稿の後に何かを明確にしたかっただけです. 私の質問は、「なぜ私はこれをしたいのですか??」ではありません。質問は、「やりたいことをどのように機能させることができるか」のようなものです。;-)
クリス