コードのこの部分がメモリ リークを引き起こしている理由を理解するのに問題があります。
for($i=0; $i<count($values); $i++){
$values[$i] = addslashes($values[$i]);
}
コードをコンテキストに入れるために、データベースに挿入されるすべての値を含む、値と呼ばれる以前に作成された配列があります。すべてのフィールドは文字列なので、すべてをエスケープする必要があります。このアプリケーションでは、addslashes または mysql_real_escape_string が良い選択です。
奇妙なことに、上記の部分を追加するとすぐに、次のようなメッセージが表示されます。
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24 bytes)
これによりメモリリークが発生したことは理解しましたが、理由はわかりません。
掘り下げて、forループの唯一の行をコメントアウトし、好奇心のためにforステートメントを残しました。リークはなくなりました。これは何を意味するのでしょうか?
PS: 文字列はすべて UTF8 でエンコードされていますが、問題になる可能性はありますか?
編集:
配列には次のようなものが含まれています:
Array (
[dossier] => 002A
[permis] =>
[adresse] => 18, rue Bellevue
[ville] => Ste-Anne-des-Lacs (Québec)
[province] =>
[code_postal] => J0R 1B0
[numero_centrale] => N/A
[routes] => De la Gare, droite chemin Avila jusqu'au bout et droite chemin Ste-Anne-des-lacs sur 1,8 km et droite sur Bellevue.
)