استیکر واتساپ، استیکر تلگرام، ساخت استیکر، برنامه آندروید ساخت استیکر

معرفی جدیدترین استیکرهای واتساپ و تلگرام

دانلود فایل از سایت دیگر با استفاده از cURL در php

پنجشنبه, ۹ بهمن ۱۳۹۳، ۱۰:۴۵ ب.ظ

در این آموزش کوتاه قصد دارم نحوه دانلود فایل از یک سایت را با استفاده از کتابخانه curl آموزش دهم اگر هیچ آشنایی با curl ندارید می توانید پست "cURL چیست؟ - قسمت اول " را مطالعه کنید.

 

فرض کنید لینک زیر آدرس فایلی است که قصد دانلود آن را داریم :

 

$url = 'http://www.example.com/a-large-file.zip';

 

که بعد از دانلود شدن در محل زیر روی هارد دیسک سرور ذخیره می گردد :

$path = '/path/to/a-large-file.zip';

ابتدا یک درخواست از نوع curl را ایجاد کرده و چون می خواهیم فایل خوانده شده در متغیر ذخیره گردد مقدار CURLOPT_RETURNTRANSFER را برابر TRUE قرار می دهیم. در آخر هم فایل خوانده شده با استفاده از تابع file_put_contents در آدرس موردنظر روی هارد دیسک ذخیره می گردد.

<?php

    $url  = 'http://www.example.com/a-large-file.zip';

    $path = '/path/to/a-large-file.zip';

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $data = ($ch);

    curl_close($ch);

    file_put_contents($path, $data);

?>

دراینجا یک مشکل و جود دارد و آن هم فایل قبل از ذخیره شدن روی هارد دیسک، ابتدا در حافظه خوانده شده و سپس ذخیره می گردد. حال فرض کنید فایلی که قرار است دانلود شود، بسیار حجیم بوده و از طرفی محدودیت حافظه RAM وجود دارد، آنگاه با اجرای اسکریپت چه اتفاقی می افتاد؟ اسکریپت از کار خواهد افتاد. توجه کنید حتی اگر هم محدودیت حافظه وجود نداشته باشد این کار می تواند منابع سرور را بیهوده هدر دهد. برای رفع این مشکل به جای خوانده شدن در حافظه، آن را مستقیما روی فایل در هارد دیسک می نویسیم برای اینکار به جای CURLOPT_RETURNTRANSFER از CURLOPT_FILE استفاده می کنیم

برای حل این مشکل ابتدا فایلی با قایلیت نوشتن باز کرده و سپس اشاره گر آن یعنی $fp  را به عنوان مقدار CURLOPT_FILE در تابع curl_setopt قرار دهید.

<?php

    $url  = 'http://www.example.com/a-large-file.zip';

    $path = '/path/to/a-large-file.zip';

    $fp = fopen($path, 'w');

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_FILE, $fp);

    $data = curl_exec($ch);

    curl_close($ch);

    fclose($fp);

?>

اگر اسکریپت را اجرا کنید مشاهده خواهید کرد که فایل در آدرس $path روی هارد دیسک ذخیره می گردد

نظرات  (۱)

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