2012-03-26 25 views
8

PHP 5.4 đi kèm với máy chủ tích hợp cho mục đích phát triển. Đây là loại điều tôi đã chờ đợi hàng tháng, bởi vì cho đến giờ tôi đã phải tấn công một kịch bản PHP để nghe các kết nối đến và xử lý chúng (vì tôi không muốn gặp rắc rối và chi phí cài đặt máy chủ thực).Tìm cổng khả dụng cho máy chủ PHP

Điều chính còn lại để tôi lo lắng là: làm thế nào tôi có thể có một cổng được chỉ định?

Trong kịch bản PHP của tôi, tôi đã sử dụng để làm điều này:

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

$port sau đó sẽ là số cổng của hệ điều hành phân công dựa trên những gì đã có sẵn.

Tôi đã tự hỏi liệu có bất kỳ tính năng nào như vậy tồn tại trong máy chủ tích hợp của PHP hay không và nếu có, dòng lệnh sẽ là gì để truy cập nó.

+0

+1 cho câu hỏi thú vị, nhưng đối với những gì nó đáng giá, chạy một máy chủ có sẵn - cách dễ dàng hơn với tôi hơn là hack cùng một tập lệnh PHP để làm điều tương tự. – Brad

+1

Nó có thể đã được, nhưng nó là một bài tập cực kỳ tốt trên mạng;) –

+0

WebMatrix được nạp với trình điều khiển cho hầu như tất cả các tính năng, và cài đặt khá nhỏ của nó quá. http://microsoft.com/web/webmatrix. Đó là những gì tôi sử dụng để giới thiệu các phát triển địa phương của mình. – rackemup420

Trả lời

1

Trả lời câu hỏi của riêng tôi (một lần nữa), tôi đã sử dụng tập lệnh theo lô sau để tìm một cổng khả dụng và khởi động máy chủ:

@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

Từ PHP docs:

Ví dụ # 1 Bắt đầu từ web server

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

Ở đó bạn có nó - máy chủ đang chạy trên cổng 8000.

+1

Điều đó sẽ thất bại nếu có điều gì đó khác xảy ra khi sử dụng cổng 8000 tại thời điểm này (giống như một máy chủ PHP khác). – duskwuff

+1

Nhận xét của duskwuff chính là điểm của câu hỏi này. –

+0

Tôi biết tôi nên đọc lại câu hỏi lần thứ ba ... – yrosen

Các vấn đề liên quan