آموزش انتقال فایل از هاست به هاست

daskhatmin فواد طهماسبی
18,741 بازدید
آموزش انتقال فایل از هاست به هاست

برای انتقال فایلهای با حجم بالا از یک سرور به سرور دیگر زحمات زیادی لازمه و بسیار طاقت فرسا نیز هست، چون یک بار باید فایل رو دانلود کنید و سپس همون فایل رو آپلود کنید روی سروری که میخواهید. حالا فرض کنید حجم فایل شما بالای ۲۰۰ مگابایت هست و شما با اینترنت ۱۲۸ کیلو بیت به اینترنت وصل شده باشید …!!!! فکر میکنم لازم نیست دیگه بقیه ماجرا رو توضیح بدم. یه روش خوب برای راحتتر شدن این کار وجود داره و اون استفاده از یک کد PHP برای دانلود فایل از روی هاست دیگر (Remote File) هست. تابع نوشته شده در زیر برای اینکار مناسب هست و این کار رو برای شما انجام میده:

function download_remote($url, $save_path) {
	set_time_limit (0);
    $f = fopen($save_path, 'w+');
    $handle = fopen($url, "rb");
    while (!feof($handle)) {
        $contents = fread($handle, 8192);
        fwrite($f, $contents);
    }
    fclose($handle);
    fclose($f);
}

در این متد ۸۱۹۲ بایت معادل ۸ کیلو بایت در یک زمان خوانده میشود نه کل فایل، چون اگر کل فایل در یک بار خوانده شود احتمالا خارج از حافظه تعیین شده در تنظیمات  PHP خواهد بود. به عبارت دیگر کل فایل منتقل خواهد شد ولی هنگام انتقال در بخشهای ۸ کیلو بایتی منتقل میشود.

مثال نحوه ی استفاده از تابع:

if (isset($_POST['submit'])) {
    $url = $_POST['url'];
    $file_name = basename($url);
    $save_path = $file_name;
    download_remote($url, $save_path);
}
?>
<form action="" method="post">
    <label>file address:</label><input type="text" name="url"/>
    <p>example: https://daskhat.ir/sitemap.xml.gz</p>
    <input type="submit" name="submit" value="Download"/>
</form>

در کد بالا فایل از آدرس “https://daskhat.ir/sitemap.xml.gz” دانلود و در همسایگی فایل remote_download.php (فایل مربوط به کدهای بالا) ذخیره خواهد شد.

 

دانلود “انتقال فایل از هاست به هاست”
نسخه v1.0 3 بار دانلود شده 501 B
daskhatmin

فواد طهماسبی

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

38 دیدگاه برای “آموزش انتقال فایل از هاست به هاست”

  1. مهدی گفت:

    Warning: set_time_limit() has been disabled for security reasons in /home/u102993703/public_html/remote_download.php on line 4

    برای من چنین اروری میده بنظرتون پیکار کنم مشکل چیه؟

  2. هومان گفت:

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

  3. سعید گفت:

    با سلام و خسته ناشید خدمت شما دوستان من یک مشکل برای پیش آمد لطفاً کمکم کنید

    من یک اسکریپت خبر خوان نصب کردم فید اضافه کردم وتنضیمات کرون جاب را به این صورت تعریف کردم -هرروز هر ساعت هر ثانیه هر دقیقه هر هفته و هر ماه******* خاصه آدرس کرون جاب را این طوری نوشتم

    wget -O http://khanehkhabar.ghasreshadi.com/cron-feeds.php
    wget -O http://khanehkhabar.ghasreshadi.com/cron-tags.php
    

    اما تا چند ساعت کار کرد و اخبار به خوبی به تعداد زیادی درج می شود اما دیگر از کار افتاد وبعد پیغام شکست را به ایمیلم ارسال می کرد

    تازه این رو بگم که از قبل دربالا ادمین سایتم این خطا را نشان می داد.

    =============================================
    Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /home/ghasresh/public_html/khanehkhabar/admin/header.php on line 3

    Warning: Cannot modify header information – headers already sent by (output started at /home/ghasresh/public_html/khanehkhabar/admin/header.php:3) in /home/ghasresh/public_html/khanehkhabar/admin/header.php on line 5
    ============================================
    این هم کد پیغام این صفحه

    
    
    
    
    
    @import url("css/base.css");
    @import url("css/grid.css");
    
    
    
    
    
    
    
    
    
    
    CPanel
    
    
     
    
       
    
         
    	 Home |
    	 Site Index |
    	 Cronjob Logs |
    	 Change Password |
    	 Logout
        
    
         
    
      
      
    
    
    
    	<li class="current"> Home
        <li class="current"> Categories
        <li class="current"> Tags
        <li class="current"> Feeds
        <li class="current"> Items
        <li class="current"> Comments
        <li class="current"> Pages
        <li class="current"> Setting
    
      
       
        

    ============================================
    حالاباید چکار کنم چندروز در این کدسرگردانم
    لطفاً کمکم کنید

  4. بردیا گفت:

    سلام
    منم زدم حجم فایل حدود ۵۵ مگ بود
    Warning: set_time_limit() has been disabled for security reasons in /home/u188888/public_html/remote_download/remote_download.php on line 4
    این ارور رو داد چی کار کنم؟

    1. فؤاد طهماسبی گفت:

      سلام،
      متاسفانه در هاست های اشتراکی معمولا تنظیمات php قابل تنظیم نیست.
      شما سطر ۴ رو کامنت کنید ولی در این صورت احتمالا فقط ۳۰ ثانیه فرصت داده میشه به اسکریپت که کار کنه، اگر سرعت کانکشن هاست شما با هاستی که فایل رو اونه خوب باشه، فایل رو دانلود میکنه تو این مدت ۳۰ ثانیه.

  5. محمد گفت:

    سلام.
    ممنون از مطالب مفیدو ارزندتون.
    فقط میخوام بدونم کدی هست که بشه باهاش فایل مورد نظر رو بجای اینکه در همسایگیه فایله copy.php کپی کنه یه جای دیگه کپی کنه.
    مثلا یه input type= text بزاریم که بپرسه فایل در کجا انتقال داده بشه و ما آدرس اونجا رو(مثلا dl.domain.com/music/favorite رو) بهش بدیم تا دقیقا مکانی که ما میخوام دانلود بشه.

    1. فؤاد طهماسبی گفت:

      چرا میشه این کا رو کرد.
      کد

      $save_path = $file_name;
      

      با این جایگزین کنید:

      $save_path = '/path_to/directory/'.$file_name;
      

      فرم هم میشه گذاشت.

  6. علی گفت:

    با سلام
    آیا راه کاری برای حالت انتقال چند فایل وجود دارد . من از پرشین گیگ می خواهم فایل هایم را انتقال دهم و باید یکی یکی انتقال دهم آیا می شود بخش آدرس فایل را چند فایل کرد که همزمان بتوان چند فایل را جابجا کرد . من فیلد آدرس را ده فایل کردم ولی یک فایل ارور به ئحجم ۴۰۰ مگ در هاست من ایجاد کرد و کل صفحه هم پر شد از ارور برای خطوط ۶٫۷٫۸و……

  7. مسعود گفت:

    روی لوکال و هاست رایگان خطای خاصی نمیده ، ولی از هر چند بار واسه خودش هر چقدر رو که مناسب می بینه دانلود میکنه و ممکنه فایل بعد از زمان زیاد ناقص دانلود بشه

  8. مسعود گفت:

    سلام ، با تشکر از آموزش خوبتون
    من این کد رو در هاست رایگان و لوکال امتحان کردم ولی در هر دو بیشتر از یک کیلوبایت دانلود نمیشود چه راه حلی وجود دارد؟

    1. فؤاد طهماسبی گفت:

      سلام،
      خطای خاصی میده؟
      اگر نه، رو لوکال تست بگیرید و برای تست فایل دیگه ای رو از یه سرور دیگه دانلود کنید.

  9. میثم گفت:

    سلام . میشه بگید php.ini کجاست و چه طوری می شه safemode اونو off کنم .

    1. فؤاد طهماسبی گفت:

      سلام.د دنبالش
      اگر دسترسی به روت سرور دارید که در دایرکتوری مربوط به فایلهای php یه فایلی هست به نام php.ini که باید بازش کنید و بگردید دنبال safe_mode و مقدارش رو مساوی با off قرار بدید، حدود سطر ۳۴۰٫ اگر دسترسی ندارید بعضی از هاست ها php.ini رو در اختیار کاربر قرار میدن، تو کنترل پنل مربوط به هاست بگردید دنبالش،اگر اینم نبود باید از پشتیبانی هاستتون بخواهید که این کار رو بکنن که شاید هم نکنن!
      http://ir1.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode

  10. فرشید گفت:

    سلام برای فایل های با حجم زیاد هم کار میکنه؟ مثلا ۷۰۰ مگ؟
    به نظرت اسکریپتی هست که اینکارو بکنه و نشون بده چند درصد انتقال داده شده؟
    اگه باشه که عالیه. ممنون

    1. فؤاد طهماسبی گفت:

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

      1. فرشید گفت:

        راستش میخوام یه فیلم رو از سایتی (چون رایگانه سرعتش پایینه) در هاستم آپلود کنم.
        و از سایت خودم (با سرعت بالا) دانلود کنم 😀
        بحث خسساست نیست . فقط می خوام ببینم میشه؟ یا چقد طول میکشه تو هاستم آپلود بشه.
        تو گوگل به انگلیسی سرچ زدم ولی چیزی پیدا نکردم اگر شما پیدا کردی ممنون میشم به منم معرفی کنی

دیدگاه‌های بیشتر

کد HTMLCSSJavaScriptPHP