پرش به محتوا

استفاده از proxy در PHP

یک سری توابع در زبان PHP از جاهای دیگه میتونن اطلاعات بخونن و دانلود کنن. مثلا تابع file_get_contents که کارش اینه که یه فایل رو میخونه به یک متغیر از نوع استرینگ که این فایل میتونه ریموت و روی یه سرور دیگه باشه. یا مثلا تابع copy میتونه یه فایل ریموت رو کپی کنه روی سرور شما. مشکلی که برای شخص من وجود داشت این بود که سرور من سرور ایران بود ولی محتوایی که میخواستم کپی کنم روی سرور خارجی ای که فیلتر بود هاست میشد و عملا عملیات کپی با تایم اوت مواجه میشد. برای حل این مشکل باید یه پروکسی رو روی درخواست کپی ست میکردم که فایل از طریق اون پروکسی کپی بشه.

تابع stream_context_create در PHP

برای ست کردن پروکسی میتونیم از تابع stream_context_create استفاده کنیم. ساختار کلی این تابع بصورت زیر است:

stream_context_create ( array $options = ? , array $params = ? ) : resource

ورودی تابع آپشن و پارامتر هست و خروجی یه ریسورسی از نواع stream_context که توی مثال درکشون میکنیم. به عنوان یک مثال ساده کد زیر رو در نظر بگیرید.

$auth = base64_encode('user:password');
$header = array("Authorization: Basic $auth");
$stream = stream_context_create([
    'http' => [
        'proxy' => 'proxy server', // For example : 209.127.191.180:9279
        'request_fulluri' => true,
        'header' => "Proxy-Authorization: Basic $auth",
    ]
]);

اینجا ما یوزر و پسورد و آدرس پروکسی رو مشخص کردیم و به تابع دادیم و بهمون یه استریم جدید داده که میتونیم توی توابعی که گفتم ازشون استفاده کنیم. بعنوان مثال توی تابع copy بصورت زیر عمل میکنیم.

copy($remote, $local, $stream);

تابع بالا عملیات کپی رو با پروکسی انجام میده.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *