Intereting Posts
что препятствует подключению PHP к моей базе данных MySQL? Когда я должен использовать Perl CGI вместо PHP (или наоборот)? Значения массива PHP по умолчанию, если ключ не существует? Как получить несколько объединенных данных в одной функции DB Laravel Вставить в mysql, используя форму php / html – не работает Понимание входного экранирования в PHP Как использовать именованные каналы в PHP между различными функциями или даже разными процессами без fork? Форматирование ячейки в процентах в PHPExcel Как синхронизировать сеансы с помощью Amazon Web Services (AWS)? Как получить дату (например, как 2013-06-02) в прошлом на основе входных чисел дней (например, как 230, 20 или 360 или сколько угодно дней) в PHP? удаление пакета joomla без удаления всех дочерних расширений Загрузка php-массива в javascript какой лучший подход я должен принять для этой проблемы php PHP DOM заменяет элемент новым элементом Ошибки проверки в режиме AJAX

Найти доступный порт для PHP-сервера

PHP 5.4 поставляется со встроенным сервером для целей разработки. Это то, что я ожидал в течение нескольких месяцев, потому что до сих пор мне приходилось разбирать скрипт PHP, который слушает входящие соединения и обрабатывает их (потому что я не хочу идти на поводу и накладные расходы на установку реального сервера).

Главное, на что я могу беспокоиться: как я могу назначить порт?

В моем PHP-скрипте я использовал это:

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

$port будет номером порта, назначенным ОС на основе того, что доступно.

Мне просто интересно, существует ли такая функция на встроенном сервере PHP, и если да, то в чем должна заключаться доступ к командной строке.

Отвечая на мой собственный вопрос (опять же), я использовал следующий пакетный скрипт, чтобы найти доступный порт и запустить сервер:

 @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= 

Из документов PHP :

Пример # 1 Запуск веб-сервера

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

Там у вас это – сервер работает на порту 8000.