0
我想优化增加这个循环的速度。我想它,如果任何人有任何想法,以提高速度因为有成千上万的会员,它确实需要时间的时间来完成目前PHP的foreach代码的性能速度
SQL存储过程返回MembersMobileByVenue这 - > 例
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