私はこのループの速度を最適化しようとしています。誰がメンバーの何千ものがあるので、速度を高めるために任意のアイデアを持っている場合、私はそれをしたいと思いますし、それが現在PHPのforeachコードのパフォーマンスの速度
SQLストアドプロシージャMembersMobileByVenueはthis-> 例
FirstName Phone Venue
Aaron 04******* 7272CD46D51F
Brad 04******* CF105BB0
Adam 04******* 7272CD46D51F
Craig 04******* CF105BB0
PHPを返す完了するまでに時間の時間がかかります
$venueIDS = isset($_POST['location']) ? $_POST['location'] : array();
$msg = $_POST['message'];
$response = array();
if(!empty($venueIDS)){
$Members = GoldCardMembers::MembersMobileByVenue();
foreach($Members as $Member){
if(in_array($Member->Venue, $venueIDS)){
$destination = $Member->Phone;
$text = 'Hi ' . $Member->FirstName . ' ' .$msg. '. Reply STOP to opt out';
$ref = 'Members';
$content = '&to='.rawurlencode($destination).
'&message='.rawurlencode($text).
'&ref='.rawurlencode($ref);
$smsbroadcast_response = sendSMS($content);
$response_lines = explode("\n", $smsbroadcast_response);
foreach($response_lines as $data_line){
$message_data = "";
$message_data = explode(':',$data_line);
if($message_data[0] == "OK"){
array_push($response, "The message to ".$message_data[1]." was successful, with reference ".$message_data[2]."\n");
}elseif($message_data[0] == "BAD"){
array_push($response, "The message to ".$message_data[1]." was NOT successful. Reason: ".$message_data[2]."\n");
}elseif($message_data[0] == "ERROR"){
array_push($response, "There was an error with this request. Reason: ".$message_data[1]."\n");
}
}
}
}
}
foreach($response as $message){
echo $message;
}
そこには複数の 'foreach()'があります。問題を引き起こす可能性のある 'if/elseif/etc'を含めてください。バットから離れて、 'if/elseif/etc'を' switch/case'文に変更することができます。これは、わずかなパフォーマンスの変更のみを提供します。あなたがしなければならないことは真のボトルネックを見つけるためにあなたのスクリプトをデバッグ&プロファイリングすることです。それはいくつかの事のいずれか、つまり:あなたの 'GoldCardMembers :: MembersMobileByVenue()'、 'sendSMS()'、 'if/elseif'、複数の' foreach() '呼び出しです。あなたのデータをチャンクしてそのように処理することをお勧めします。 – Darren