Есть ли способ заставить pcntl_fork работать в WAMP? Мне нужно разработать решение forking и проверить его локально.
Нет, это невозможно. Для расширения PCNTL требуются * nix-платформы.
Теперь, с учетом сказанного, что вы пытаетесь сделать, и можете ли вы решить его без наложения …?
Изменить: некоторые альтернативы запуску фоновых процессов:
Unix / Linux:
exec('nohup php yourscript.php > /dev/null 2>&1 &');
Окна;
$com = new Com('WScript.shell'); $com->run('php yourscript.php', 10, false);
Документацию по аргументам см. По адресу : http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx
решение псевдокода:
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; } }
Это уже ответили, но я думал, что добавлю 2p.
Вы можете иметь pcntl-fork с php в windows, используя cygwin.
Это настоящая боль для установки, но если мне нравится, вы просто хотите запустить скрипт php cli, это ваш лучший выбор.
У меня есть инструкции отсюда :