¿Hay alguna manera de hacer que pcntl_fork funcione en WAMP? Necesito desarrollar una solución de bifurcación y probarla localmente.WAMP y pcntl_fork
Respuesta
No, no es posible. La extensión PCNTL requiere plataformas * nix.
Ahora, dicho esto, ¿qué estás tratando de hacer, y puedes resolverlo sin forzar ...?
Editar: Algunas alternativas a los procesos en segundo plano de lanzamiento:
Unix/Linux:
exec('nohup php yourscript.php > /dev/null 2>&1 &');
Windows;
$com = new Com('WScript.shell'); $com->run('php yourscript.php', 10, false);
Para obtener documentación sobre los argumentos, véase: solución http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx
Necesito tener procesos simultáneos en ejecución. Puedo implementar el uso de cron (y usar el DB para administrar la cantidad de procesos en ejecución). Sin embargo, digamos que quería ejecutar 10 procesos concurrentes, necesitaría que el cron llamara a un script en particular 10 veces, en incrementos de 1 minuto, para poder ejecutar los 10 guiones (es decir, tardaría 10 minutos completos antes). Obtengo el número deseado de scripts concurrentes). Alternativamente, puedo hacer que las funciones "ficticias" llamen a la misma secuencia de comandos (por ejemplo, foo_1 llama a foo, foo_2 llama a foo, etc.) y tiene la llamada de cron foo_1, foo_2, etc. cada minuto. Parece kludgy. – StackOverflowNewbie
@Stack: Bueno, hay más de una forma de iniciar tareas en segundo plano. Puede usar 'nohup' y' & 'en Linux para desconectar los procesos, o un objeto COM WScript: http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx para ejecutar tareas en segundo plano ... – ircmaxell
@Stack: editó la respuesta – ircmaxell
pseudo-código:
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;
}
}
Esto ya ha sido contestada, pero pensé que iba a añadir mi 2p .
Puede tener pcntl-fork con php en windows usando cygwin.
Es un verdadero dolor de instalar, pero si, como yo, solo quieres ejecutar un script php cli, es tu mejor opción.
me dieron instrucciones de here:
- 1. PHP: ¿Qué hace pcntl_fork() realmente?
- 2. pcntl_fork y la conexión MySQL se ha ido
- 3. IIS y Apache (WAMP) ejecutando
- 4. Capturar imagen con imagegrabscreen y Wamp
- 5. webgrind en WAMP
- 6. Localhost WAMP Prohibido
- 7. WAMP Curl instalación
- 8. CURL para WAMP
- 9. Paquete portátil WAMP?
- 10. Error 403. servidor Wamp
- 11. Php <? etiquetas en WAMP
- 12. Uso de Python con WAMP
- 13. Cómo configurar xdebug con WAMP
- 14. WAMP está funcionando muy lento
- 15. ¿Cómo puedo obtener MongoDB trabajando con php 5.3.5 y wamp?
- 16. WAMP vs instalación individual de PHP, Apache y MySQL
- 17. wamp server mysql ID de usuario y contraseña
- 18. .htaccess no funciona en WAMP
- 19. Instalar PEAR con Wamp 2.1
- 20. ¿Es tonto desarrollar LAMP en WAMP?
- 21. Envío de correos electrónicos con WAMP
- 22. cómo reiniciar programáticamente WAMP o Apache?
- 23. línea de comandos localmente usando WAMP
- 24. WAMP no puede cargar la extensión mysqli
- 25. Servidor Wamp Error fuera de línea
- 26. ¿Qué servidor WAMP es el mejor?
- 27. ¿Cómo puedo usar y acceder a una base de datos SQLite usando PHP y Wamp Server?
- 28. Cómo cambiar el número de puerto para apache en WAMP
- 29. Wamp - Complemento php5.2 instalado - El icono permanece amarillo
- 30. ¿Cómo se usa .htaccess en el servidor WAMP?
Se podría tratar de correr/traducirlo bajo Cygwin, donde es más probable que funcione PCNTL. De lo contrario, podría diseñar algo a través de la extensión w32api si se atreve (y si todavía está disponible). – mario