Ping Port Pelayan dengan PHP
Mendapatkan status kesambungan pelayan jauh ialah aspek penting dalam pengurusan dan ujian rangkaian. PHP menyediakan cara mudah untuk ping alamat IP dan port menggunakan fungsi fsockopen(). Walau bagaimanapun, skrip sedia ada yang disebut dalam soalan adalah terhad untuk menguji tapak web, bukan gabungan IP:port tertentu.
Untuk menangani keperluan ini, kami boleh memanfaatkan mekanisme penubuhan sambungan TCP. Dengan cuba mewujudkan sambungan TCP dengan alamat IP dan port yang diberikan, kami boleh membuat kesimpulan tentang ketersediaan pelayan. Kod di bawah merangkumi fungsi ini:
<code class="php"><?php function ping($host, $port, $timeout) { $tB = microtime(true); $fP = fsockopen($host, $port, $errno, $errstr, $timeout); if (!$fP) { return "down"; } $tA = microtime(true); return round((($tA - $tB) * 1000), 0)." ms"; } // Usage example: ping a server at IP address 127.0.0.1, port 80 echo ping("127.0.0.1", 80, 10); ?></code>
Coretan kod ini menentukan sama ada pelayan menerima sambungan TCP pada port yang ditentukan. Jika sambungan diwujudkan dalam tamat masa yang diberikan, fungsi mengembalikan masa tindak balas ping dalam milisaat; jika tidak, ia mengembalikan "bawah" untuk menunjukkan bahawa pelayan tidak dapat dicapai.
Untuk memperhalusi lagi respons, anda boleh menggunakan fungsi pingDomain() yang disediakan dalam jawapan yang diterima:
<code class="php"><?php function pingDomain($domain){ $starttime = microtime(true); $file = fsockopen ($domain, 80, $errno, $errstr, 10); $stoptime = microtime(true); $status = 0; if (!$file) $status = -1; // Site is down else { fclose($file); $status = ($stoptime - $starttime) * 1000; $status = floor($status); } return $status; } // Usage example: ping a server at domain name example.com echo pingDomain("example.com"); ?></code>
Dengan memanfaatkan fungsi soket PHP, kami boleh ping kedua-dua alamat IP dan nama domain dengan berkesan untuk menguji ketersambungan dan mengenal pasti hos yang tidak bertindak balas.
Atas ialah kandungan terperinci Bagaimana untuk Ping Port Pelayan Jauh dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!