私の現在のコード(下記参照)は147MBの仮想メモリを使用しています! プロバイダがデフォルトで100MBを割り当てていて、処理が一旦終了すると内部エラーが発生します。 コードはcurl multiを使用しており、仮想メモリを最小限に抑えながら150回以上の反復でループできる必要があります。以下のコードは150回の反復でのみ設定され、依然として内部サーバーエラーが発生します。 90反復では、問題は発生しません。私のPHPコードを最適化して仮想メモリを減らすには?
リソースの使用/仮想メモリを削減するためにコードを調整するにはどうすればよいですか?
ありがとうございます!
<?php
function udate($format, $utimestamp = null) {
if ($utimestamp === null)
$utimestamp = microtime(true);
$timestamp = floor($utimestamp);
$milliseconds = round(($utimestamp - $timestamp) * 1000);
return date(preg_replace('`(?<!\\\\)u`', $milliseconds, $format), $timestamp);
}
$url = 'https://www.testdomain.com/';
$curl_arr = array();
$master = curl_multi_init();
for($i=0; $i<150; $i++)
{
$curl_arr[$i] = curl_init();
curl_setopt($curl_arr[$i], CURLOPT_URL, $url);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, FALSE);
curl_multi_add_handle($master, $curl_arr[$i]);
}
do {
curl_multi_exec($master,$running);
} while($running > 0);
for($i=0; $i<150; $i++)
{
$results = curl_multi_getcontent ($curl_arr[$i]);
$results = explode("<br>", $results);
echo $results[0];
echo "<br>";
echo $results[1];
echo "<br>";
echo udate('H:i:s:u');
echo "<br><br>";
usleep(100000);
}
?>
@dqhendricks: "私のプロバイダはデフォルトで100MBを割り当てました" ==共有ホスティング。 – thirtydot
@dqhendricks、@thirtydot:LinuxでWHMを使用する。私はサーバーの情報で私の質問を更新しました。私は、あなたがApacheよりもむしろコマンドラインでそれを実行することによって何を意味するのか分からないのですか?申し訳ありません.. – iCeR
@iCeR:テストしているテストページは何バイトありますか? – thirtydot