systemは最後の行を返す仕様なので、行の区切りを探す処理を行ったり、そのためのデータをメモリに保存する必要があります。passthruはそのようなことはしませんので処理的にも無駄が少ないですし、メモリ使用量も抑えられます。
特に画像など大きなバイナリデータを出力するコマンドでは改行コードに相当するデータが含まれなくてメモリ使用量が大きくなることがあります。
PHP
1<?php
2ini_set('memory_limit', '1M');
3
4$cmd = "php -r 'for(\$i=0;\$i<2000;\$i++){print(str_repeat(\"a\", 1000));}'"; // 2MBの'a'を改行なしに出力します。
5
6// system($cmd); // systemだと途中でメモリ不足のエラーになります
7passthru($cmd);
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/03 02:39 編集