PHP スクリプトを使用して siege コマンドを実行し、出力を取得しようとしています。
シェルで次を実行すると、次の結果が得られます。
$ /usr/local/bin/siege -c30 -t30s -f urls.txt
.....
HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html
HTTP/1.1 200 0.11 secs: 11169 bytes ==> GET /*******.html
HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html
Lifting the server siege.. done.
Transactions: 1479 hits
Availability: 100.00 %
Elapsed time: 29.05 secs
Data transferred: 14.69 MB
Response time: 0.10 secs
Transaction rate: 50.91 trans/sec
Throughput: 0.51 MB/sec
Concurrency: 5.33
Successful transactions: 1479
Failed transactions: 0
Longest transaction: 0.16
Shortest transaction: 0.09
exec()、shell_exec()、system() を介して PHP で同じコマンドを実行すると、次の出力しか表示されません。
HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html
HTTP/1.1 200 0.11 secs: 11169 bytes ==> GET /*******.html
HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html
私は包囲によって提供される結果にのみ関心があるので、このデータは役に立ちません。どういうわけか、包囲の結果を無視しています。
これが私がPHPでやっていることの例です...
exec('/usr/local/bin/siege -c30 -t30s -f urls.txt', $output);