XML ファイル (約 5000 製品) から製品データの割り当てをインポートしています。スクリプトを実行すると、約 10 ~ 12 秒で機能するようになります。
ここで、各製品の説明が句読点記号で終わるようにするこの句読点関数を追加すると、コードはサーバーで php 60 秒のロード時間まで実行されますが、エラーは発生しません。エラー報告をオンにしています。スクリプトを 60 秒で読み込めなかったという最終エラーが表示されます。
問題は、この関数を見て、そのリソースを消費しているのかということです。高速化するにはどうすればよいですか?
コメントによると、問題は pregmatch ループである可能性があります。この関数が何をするのか説明しましょう。文字列の最後の文字が句読点かどうかをチェックします。そうでない場合は、最後の文字と一致し、再度チェックします。
function punctuation($string){
if(strlen($string) > 5){
// Get $last_char
$desired_punctuation = array(".",",","?","!");
$last_char = substr($string, -1);
// Check if $last_char is in the $desired_punctuation array
if(!in_array($last_char, $desired_punctuation)){
// strip the $mytrim string and get only letters at the end;
while(!preg_match("/^[a-zA-Z]$/", $last_char)){
$string = substr($string, 0, -1);
$last_char = substr($string, -1);
}
// add "." to the string
$string .= '.';
}
}
return $string;
}
機能に問題がなければ、実行時間が長いのは、私が発見しなければならない別の原因によるものに違いありません。
この部分についてあなたの意見が欲しいだけです。