Có cách nào để thực hiện công việc pcntl_fork trong WAMP không? Tôi cần phải phát triển một giải pháp forking và thử nghiệm nó tại địa phương.WAMP và pcntl_fork
Trả lời
Không, không thể. Phần mở rộng PCNTL yêu cầu * nền tảng nix.
Bây giờ, với điều đó đã nói, bạn đang cố gắng làm gì, và bạn có thể giải quyết nó mà không bị nghẹt thở ...?
Edit: Một số lựa chọn thay thế cho quá trình nền tung ra:
Unix/Linux:
exec('nohup php yourscript.php > /dev/null 2>&1 &');
Windows;
$com = new Com('WScript.shell'); $com->run('php yourscript.php', 10, false);
Đối với tài liệu trên những lập luận, xem: giải pháp http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx
Tôi cần phải có quá trình đồng thời chạy. Tôi có thể thực hiện bằng cách sử dụng cron (và sử dụng DB để quản lý số lượng các tiến trình đang chạy). Tuy nhiên, nói rằng tôi muốn 10 tiến trình đồng thời chạy, tôi sẽ cần cron để gọi một tập lệnh cụ thể 10 lần - trong khoảng tăng 1 phút - để có được tất cả 10 tập lệnh đang chạy (nghĩa là, sẽ mất 10 phút trước khi Tôi nhận được số lượng kịch bản đồng thời mong muốn). Ngoài ra, tôi có thể có chức năng "giả" gọi cùng một tập lệnh (ví dụ: foo_1 cuộc gọi foo, foo_2 cuộc gọi foo, v.v.) và có cuộc gọi cron foo_1, foo_2, v.v. mỗi phút. Có vẻ như kludgy. – StackOverflowNewbie
@Stack: Vâng, có nhiều cách để khởi chạy các tác vụ nền. Bạn có thể sử dụng 'nohup' và' & 'trên Linux để ngắt kết nối các quá trình, hoặc một COM WScript: http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx đối tượng khởi chạy tác vụ nền ... – ircmaxell
@Stack: đã chỉnh sửa câu trả lời – ircmaxell
pseudo-code:
while (TRUE)
{
$process_limit = get_process_limit();
$process_count = get_process_count();
if process count < process limit:
{
// get_row returns a row (as an array) from the DB that needs to be processed
$row = get_row();
if($row === array())
{
// Nothing to process; sleep
sleep(2);
}
else
{
// Process row
process_count(+1);
process_row($row);
process_count(-1);
}
}
elseif process count === process limit
{
// Do not add to the process
exit;
}
elseif process count > process limit
{
// Means the process limit was decreased
// Terminate this process instance
process_count(-1);
exit;
}
}
này đã được trả lời nhưng tôi nghĩ tôi sẽ thêm 2p của tôi .
Bạn có thể có pcntl-fork với php trong cửa sổ bằng cách sử dụng Cygwin.
Đó là một nỗi đau thực sự để cài đặt, nhưng nếu như tôi bạn chỉ muốn một kịch bản php cli để chạy, đó là đặt cược tốt nhất của bạn.
Tôi nhận được hướng dẫn từ here:
- 1. pcntl_fork và kết nối MySQL đã biến mất
- 2. pcntl_fork() trả về, Lỗi nghiêm trọng: Gọi hàm không xác định pcntl_fork()
- 3. Chụp ảnh bằng imagegrabscreen và Wamp
- 4. webgrind trên wamp
- 5. CURL cho WAMP
- 6. Lỗi 403. WAMP server
- 7. Php <? thẻ trên WAMP
- 8. Cách cấu hình xdebug với WAMP
- 9. Amazon S3 trên wamp localhost lỗi SSL
- 10. php mssql mở rộng trên wamp
- 11. WAMP gửi Thư bằng SMTP localhost
- 12. Thiết lập Máy chủ ảo Wamp
- 13. Máy chủ WAMP nào là tốt nhất?
- 14. Sử dụng máy chủ IIS và máy chủ wamp trên cùng một máy
- 15. Cách đăng nhập vào phpMyAdmin bằng WAMP, tên người dùng và mật khẩu là gì?
- 16. Tôi có thể giữ MYSQL và WAMP Server chạy cùng nhau không?
- 17. Nhiều phiên bản PHP trong Wamp trong Windows 7
- 18. Cài đặt khung công tác Zend với máy chủ WAMP
- 19. Cài đặt phần mở rộng SQLSRV cho PHP trên WAMP
- 20. # 2006 MySQL Server đã ra đi lỗi trong WAMP
- 21. Đặt mật khẩu cho người dùng trong PhpMyAdmin trong Wamp
- 22. Sử dụng apache tomcat với máy chủ wamp
- 23. Làm thế nào để thay đổi số cổng cho apache trong WAMP
- 24. Làm cách nào để gửi email từ máy chủ wamp cục bộ bằng PHP?
- 25. Cách định cấu hình WAMP (localhost) để gửi email bằng Gmail?
- 26. Máy chủ WAMP có màu xanh lá cây nhưng chỉ nhận được 404
- 27. PHP: Lỗi Máy chủ Nội bộ khi sử dụng WAMP (khi khởi động)
- 28. WAMP .htaccess cho nội Server Error sau khi chuyển từ XAMPP
- 29. Làm cách nào để CURL hoạt động với PHP trên Windows? (WAMP)
- 30. Bạn có câm để phát triển cho LAMP trên WAMP không?
Bạn có thể thử chạy/biên dịch nó dưới Cygwin, trong đó pcntl có nhiều khả năng hoạt động hơn. Khác bạn có thể thủ công một cái gì đó thông qua phần mở rộng w32api nếu bạn dám (và nếu đó vẫn còn có sẵn). – mario