بازکردن سوکت اینترنتی (fsockopen)
با تابع fsockopen() یک سوکت اینترنتی باز می کنی. سوکت (Socket) یک راه ارتباطی سطح پایین است. مثل سیم تلفن بین دو برنامه. با آن درخواست می فرستی و پاسخ می خوانی.
تعریف و کاربرد سریع
fsockopen() اتصال اینترنتی یا یونیکس باز می کند. سپس می توانی با توابع فایل مانند fgets() و fwrite() کار کنی.
نحو و پارامترها
fsockopen(hostname, port, errno, errstr, timeout)
- hostname: نام میزبان؛ مانند ssl://example.com.
- port: شماره درگاه؛ برای unix:// عدد -1.
- errno: شماره خطای سیستمی؛ اختیاری.
- errstr: متن خطا؛ اختیاری.
- timeout: مهلت اتصال بر حسب ثانیه.
نمونه کد: درخواست ساده HTTP
<?php
$host = "www.w3schools.com";
$port = 80;
$errno = 0;
$errstr = "";
$timeout = 20;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if ($fp === false) {
echo $errstr . " (" . $errno . ")<br>";
} else {
$out = "GET / HTTP/1.1\n";
$out .= "Host: " . $host . "\n";
$out .= "Connection: Close\n\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
گام های عملی
- hostname و port را مشخص کن.
- با fsockopen() وصل شو.
- درخواست را با fwrite() بفرست.
- پاسخ را با fgets() بخوان.
- اتصال را با fclose() ببند.
نکته: برای HTTPS از پیشوند ssl:// یا tls:// استفاده کن.
هشدار: زمان سنج کوچک است؟ قطع اتصال رخ می دهد. مقدار timeout را کمی بیشتر بگذار.
مطالب مرتبط داخلی
برای بررسی رکوردهای DNS از dns_get_record استفاده کن. همچنین برای checkdnsrr سر بزن تا وجود رکوردها را بسنجی.
جمع بندی سریع
- fsockopen یک سوکت اینترنتی باز می کند.
- با توابع فایل داده ردوبدل می کنی.
- برای HTTPS از ssl:// یا tls:// استفاده کن.
- timeout کم باعث خطا می شود.