Tôi đang cố gắng sử dụng một tập lệnh PHP để chạy lệnh bao vây và nắm bắt đầu ra.PHP shell_exec(), exec() và hệ thống() chỉ trả về một phần đầu ra
Chạy sau trong vỏ cung cấp các kết quả này:
$ /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
Khi chạy lệnh tương tự trong PHP qua exec(), shell_exec(), hệ thống(), tôi chỉ nhận được đầu ra sau đây.
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
Vì tôi thực sự chỉ quan tâm đến kết quả được cung cấp bởi cuộc vây hãm, dữ liệu này vô dụng đối với tôi. Đối với một số lý do nó bỏ qua các kết quả của cuộc vây hãm.
Dưới đây là một ví dụ về những gì tôi đang làm trong PHP ...
exec('/usr/local/bin/siege -c30 -t30s -f urls.txt', $output);
1: Làm tốt lắm. Những thứ rõ ràng, nhưng chỉ một khi bạn đã biết rằng các ứng dụng có thể xuất ra một trong hai luồng. Nó không rõ ràng từ làm việc với một thiết bị đầu cuối bằng tay. –
Hoạt động hoàn hảo. Cảm ơn rất nhiều! Tôi đã có thể sử dụng những điều sau đây để có được đầu ra stderr '/ usr/local/bin/siege -30 -30s -f urls.txt 2> & 1>/dev/null' Có cách nào tốt hơn để làm cái này? – theseanstewart