请耐心等待,因为我对此有点陌生。我有一个页面在提交表单后调用另一个页面。新页面包含一个冗长的 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时,似乎已经生效了。就是这样!不是很复杂。如果有人可以帮我找出一些技巧或更好的方法,请帮忙,因为我已经为此绞尽脑汁了 2 天。
我只需要循环有更多的时间来完成。再次提前感谢:-)
编辑:对于那些希望看到脚本正常工作的人,我将它用于只有六个号码的彩票,更容易中奖,并且不会超时。转到此处并确保选择顶部选项(乐透 649)。http://diablogosse.com/test/lottosims.php
EDIT2:对不起,如果这很糟糕,但我只是想在很多帖子之后澄清一些事情。我的问题不是“我为什么要以上帝的名义这样做??”。这个问题更像是:“我怎样才能让我想做的事情发挥作用。”。;-)
克里斯