2012-03-26 18 views
8

PHP 5.4 viene con un servidor integrado para fines de desarrollo. Este es el tipo de cosas que he estado esperando durante meses, porque hasta ahora he tenido que hackear juntos un script PHP que escucha las conexiones entrantes y las maneja (porque no quiero ir al problema y sobrecarga de instalar un servidor real).Buscar puerto disponible para el servidor PHP

Lo principal que me preocupa es: ¿cómo puedo tener un puerto asignado?

En mi script PHP, que solía hacer esto:

socket_bind($sock,"localhost",0) or die("Could not bind socket"); 
socket_getsockname($sock,$ip,$port); 

$port sería entonces el número de puerto asignado por el sistema operativo basado en lo que está disponible.

Me preguntaba si existía alguna característica de este tipo en el servidor integrado de PHP y, de ser así, cuál debería ser la línea de comando para acceder a ella.

+0

+1 para la pregunta interesante, pero para lo que vale la pena, ejecutar un servidor estándar suena * manera * más fácil para mí que hackear juntos un script PHP para hacer lo mismo. – Brad

+1

Probablemente lo hubiera sido, pero fue un ejercicio extremadamente bueno para la creación de redes;) –

+0

WebMatrix viene cargado con controladores para casi todas las funciones, y su instalación es bastante pequeña también. http://microsoft.com/web/webmatrix. Eso es lo que uso para demostrar mis desarrollos locales. – rackemup420

Respuesta

1

responder a mi propia pregunta (de nuevo), utilicé la siguiente secuencia de comandos por lotes para encontrar un puerto disponible e iniciar el servidor:

@echo off 
for /L %%a in (8000,1,8100) do netstat /a /n | find "%%a" | find "LISTENING" >NUL || set tmp_phpserver=%%a&& goto found 
echo No free ports found in range 8000-8100... 
pause 
exit 
:found 
echo Starting server on port %tmp_phpserver% 
start "PHP server %~p1 on localhost:%tmp_phpserver%" /min php -S localhost:%tmp_phpserver% 
echo Server started 
timeout 3 
start http://localhost:%tmp_phpserver%/%~nx1 
set tmp_phpserver= 
0

Desde el PHP docs:

Ejemplo # 1 Inicio del servidor web

$ cd ~/public_html 
$ php -S localhost:8000 

ahí lo tienes - el servidor se está ejecutando en el puerto 8000.

+1

Eso fallará si algo más está usando el puerto 8000 en este momento (como otro servidor de desarrollo de PHP). – duskwuff

+1

El comentario de duskwuff es exactamente el punto de esta pregunta. –

+0

Sabía que debería haber vuelto a leer la pregunta por tercera vez ... – yrosen

Cuestiones relacionadas