He creado un proceso usando proc-open
pero bajo Windows el stream-select no funciona. Lo que estoy tratando de lograr es leer tanto stdout y stderr , mientras que, además de escribir a la entrada estándar y asegurar que la salida se puede emparejar con las entradas. ¿Hay alguna solución para Windows para superar esta deficiencia?PHP proc_open en Windows
Respuesta
No tiene mucha información sobre lo que no funciona para usted con la selección de secuencias en Windows. Sin embargo, este es un ejemplo de trabajo sobre cómo usar la selección de transmisión. Acabo de ejecutar esto con éxito con PHP 5.4 en Windows XP.
Editar: Uhhmmm .. Parece que fue que no funciona después de todo ... Sry, probando un poco más aquí .. :)
de nuevo Edit:
Así pues, hice algunos más experimentando en esto, pero sin éxito.
Tal vez debería dejar que los procesos hablen TCP/UDP/IP el uno al otro?
Otra forma de avanzar (si aún desea usar stdout/stdin/stderr en su proceso) podría ser utilizar proc_open con manejadores de archivos, entonces su proceso está escribiendo en archivos, y luego usar algo similar a unix 'inotify, cargando esto con la clase PHP DOTNET: Is there anything like inotify on Windows? para detectar cambios en los archivos ...? Solo una idea ...
O tal vez cambiar a un sistema operativo unix? ;) Ok, eso es todo para mí esta noche. Buenas noches
'stream_select' en su examen parece inútil. Simplemente lee de los tubos 'stdout' y' stderr' sin mirar realmente lo que se devuelve en '$ read_streams'. Esto podría bloquear si el proceso hijo está ocupado (o el niño escribió en 'stderr' cuando está esperando datos en' stdout') – galymzhan
Sí, después de algunas pruebas parece que tiene razón. Uhm ... –
@AlfredGodoy - El problema es que Windows 'select' no funciona. Pero unix/linux parece funcionar. Perdón por el esfuerzo por el código que no funciona. –
- 1. PHP proc_open abre varias veces
- 2. problemas PHP proc_open en las ventanas
- 3. PHP proc_open no funcionará - me da "Missing calificador mango en orden"
- 4. Error extraño en PHP, espacios en las rutas y Windows
- 5. de PHP en Windows
- 6. Bifurcación en PHP en Windows
- 7. Instalación de PHP en Windows
- 8. Curses para PHP en Windows
- 9. php-fpm para Windows?
- 10. Comunicaciones en serie con PHP en Windows
- 11. Ejecutar archivo php en Windows CMD
- 12. Aplicaciones GUI basadas en PHP para Windows
- 13. Instalación de extensiones de PHP en Windows
- 14. compilador de PHP para Windows
- 15. php-apc para windows xampp
- 16. PHP Encrypt y Windows Decrypt
- 17. proc_open: Ampliación de números de descriptor de archivo para habilitar "status" de realimentación desde un script Perl <a href="http://php.net/manual/en/function.proc-open.php">proc_open</a> manual indica
- 18. PHP Extracción de Windows^M Carácter
- 19. Usando la autenticación de Windows con php?
- 20. PHP - Lectura del puerto COM desde Windows
- 21. Ayuda con la ruta de Windows - PHP
- 22. IDE para PHP y Python Windows
- 23. ejecución shell Proper en PHP
- 24. php no se reconoce como un comando interno (en Windows)
- 25. PHP exec() como proceso en segundo plano (Windows Wampserver Environment)
- 26. PHP - argumentos de línea de comando en Windows
- 27. Despliegue de PHP en servidores de Windows/Unix
- 28. ¿Cómo comunicarse entre C++ y PHP en Windows?
- 29. PHP CLI en Windows: ¿Manejo de comandos Ctrl-C?
- 30. ¿Cómo puedo instalar la extensión php_posix php en Windows?
Creo que lo único que puede hacer es configurar sus tuberías en modo no bloqueante y revisarlas manualmente, desafortunadamente. – netcoder
@netcoder - He intentado esto. 'stream_set_blocking' devuelve false :-( –
stderr y stdout no pueden establecerse como no bloqueantes ¿Qué intentas lograr exactamente? Tener un código? select puede no ser necesario aquí. – Pierre