私はリモートAPIから情報を収集する必要があるスクリプトに問題があるデータの行数がわずか200行だが、実行しようとするとすぐにスクリプトがうまく動作する大きなデータセットページは最終的にログを見るとタイムアウトメッセージが表示されます。エラーコードは500と表示されます。大きなリモートファイルを処理する際にタイムアウトの問題が発生する
これまでにメモリ制限、実行時間、入力時間を増やしてみました問題を解決することができますが、これまでのところ私が下に自分のスクリプトを投稿していない、誰かが私が間違ってやった何かを見ることができない場合やリモートで大きなファイルを処理する方法は非常に感謝する。
<?php
set_time_limit (0);
ini_set('memory_limit','128M');
ini_set('max_execution_time','999');
ini_set('max_input_time','999');
load site settings
require_once ('config.php');
$id = mysql_real_escape_string($_GET['pr']);
$q = mysql_query("SELECT * FROM ".PREFIX."pings WHERE holderID='$id'") or die(mysql_error());
while(false !== ($r = mysql_fetch_assoc($q))) {
$response = file_get_contents("https://secure.comcetera.com/npl?user=".PINGUSERNAME."&pass=".PINGPASSWORD."&apiver=2.3&msisdn=".$r['r1']);
$data = split("\n",$response);
if ($data[0]=="QUERYOK")
{
list($number,$network, $msg)=split(" ",$data[1]);
if($msg ==''){$msg='OK';}
$sql = mysql_query("SELECT network FROM ".PREFIX."networks WHERE code='".$network."'");
$row = mysql_fetch_object($sql);
mysql_query("UPDATE ".PREFIX."pings SET response='$msg', network='$row->network', dateUpdated='$dateandtime' WHERE r1='".$r['r1']."' ");
//echo "Carrier for $number is $r->network";
}
else
{
mysql_query("UPDATE ".PREFIX."pings SET response='".$data[0]."', dateUpdated='$dateandtime' WHERE r1='".$r['r1']."' ");
}
}
mysql_query("UPDATE ".PREFIX."pings_holder SET pinged='Yes' WHERE holderID ='$id' ");
$_SESSION['success'] = 'Records Pinged '.$error;
header('Location: '.DIR);
exit();
?>
実行時間を最大にするとどうなりますか? 500エラーには、常にログに詳細なエラーメッセージが表示されます。それは何と言いますか? –
PHPがセーフモードで実行されている場合、 'set_time_limit'は有効ではありません.... – xdazz
ここにエラーログ[26/Oct/2011:11:29:30 +0000]の記載があります" GET/pingcenter/includes/ping.php?pr = 12 HTTP/1.1 "500 100" https://www.theonepoint.org/pingcenter/ "Mozilla/4.0(互換性、MSIE 8.0、Windows NT 6.1、Trident/4.0、GTB7.1、SLCC2 ; NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) " サーバーがセーフモードで動作していないと確信しています – Dave