Về nguyên tắc, trên hệ thống Unixish (Linux, BSD, vv), bạn có thể sử dụng proc_nice()
chức năng để thay đổi ưu tiên xử lý, như thế này:
proc_nice(20); // now this process has very low priority
Tuy nhiên, có một cặp vợ chồng trong số các cảnh báo chính ở đây làm cho nó ít hữu ích hơn trong thực tế:
- Nó không được hỗ trợ trên Windows.
- Bạn chỉ được phép tăng độ đẹp, chứ không phải để giảm giá trị (không quay lại giá trị ban đầu của nó).
- Tính độc đáo vẫn tồn tại cho đến khi tiến trình PHP thoát, có thể là một vấn đề nếu bạn đang chạy PHP như là một quy trình FastCGI, hoặc thậm chí tệ hơn, như là một phần mở rộng máy chủ web.
- Vì các vấn đề trên,
proc_nice()
có thể bị tắt vì lý do bảo mật ngay cả trên các hệ thống có thể hỗ trợ kỹ thuật.
gì bạn có thể thử để làm, nếu webhost của bạn cho phép nó, là để start a background process cho nhiệm vụ lâu dài, do đó máy chủ web của bạn có thể trở lại phục vụ các yêu cầu trong khi nó đang chạy. Bạn thậm chí có thể sử dụng lệnh nice
vỏ để giảm độ ưu tiên của tiến trình nền, như thế này:
exec("nice nohup php -f slow_script.php </dev/null> output.txt 2>&1 &");
Một khi kịch bản chậm đã hoàn tất, bạn có thể nhận được kết quả của mình bằng cách tải output.txt
.
Nguồn
2013-01-09 23:14:52
Cảm ơn bạn rất nhiều, đó là câu trả lời hoàn hảo! – molbal
Về cơ bản, nó sẽ không giảm mức sử dụng, vì nó sẽ vẫn giữ nguyên. Nhưng sẽ quá trình phát triển từ việc tăng tốc đến 100% mức sử dụng CPU cho toàn bộ thời lượng của một tập lệnh. Mà sẽ không chặn các nhiệm vụ khác cần được thực hiện nhanh hơn. – Grzegorz