1

答えを探している質問がいくつかあります。

1: PHP メモリ割り当て。

1メガバイトの変数がある場合$img =file_get_contents('imageUrl');

私のphpメモリ割り当ては64メガバイトで、100人が同時にスクリプトにアクセスしています。メモリ割り当てエラーが発生しますか?

2: URL から画像を保存するにはどうすればよいですか? メモリ割り当ての警告が表示されます...

if ($fileName){
    //check to make sure filename is not taken
    if(!file_exists("img/".$fileName.$fileExt)){
            $image = file_get_contents("someURL".$fileName.$fileExt);
        //check to make sure the filesize is not rediculous 8 Megabytes.
        if(strlen($image) < (8 * 1048576)){                     
            if(file_put_contents("img/".$fileName.$fileExt, $image)){
                usleep((0.25 * 1000000)); //rest 1/4 second
                    if(!image_resize("img/".$fileName.$fileExt, 202, 202, 1))die('no rezize');
            //PRETEND THERE ARE CLOSING CURLY BRACES THANKS
4

2 に答える 2

1

構成ディレクティブについて話していると仮定すると、これは各スクリプト実行が消費できるmemory_limitメモリ量の制限であるため、制限は同時にアクセスするすべてのユーザーの合計ではなく、同時にアクセスするユーザーごとであり、それを超えることはありません。その目的は、たとえば、完了するまでに数百メガバイトのメモリを必要とする巨大な画像のサイズを変更しようとする 1 つのスクリプトや、終了せずに大量のデータ文字列を蓄積する暴走ループを防止し、同時アクセスの可能性を制限しないことです。64M 64M

ただし、スクリプトの同時実行が多すぎると、サーバーの使用可能なメモリを使い果たす可能性があるとは言えません。その場合、サーバーはページングを開始する可能性が高く、パフォーマンスに非常に悪い影響を与えます。ただし、エラーが発生してリクエストへの応答が停止することはありません。

于 2012-10-22T23:21:44.843 に答える
1

PHP のメモリ割り当ては呼び出しごとです。多くの PHP モデル (例: fcgi) では、1 つの PHP プロセスが他のプロセスを認識していないため、これが唯一の実用的なバージョンです。

いいえ、これは割り当てエラーをスローしませんが、100MB を使用します

総メモリ使用量を制限するには、並行性と呼び出しごとの使用量を同時に制限する必要があります。

于 2012-10-22T23:21:49.560 に答える