اسکریپت php انتقال فایل بین دو هاست
انتقال فایل بین دو هاست در شرایطی که حجم فایل بسیار بالا باشد، باعث اتلاف زمان و هزینه برای دانلود و آپلود مجدد فایل است.
برای حل این مشکل میتوان با یک اسکریپت php، کار انتقال فایل از طریق پروتکل http یا ftp را به آسانی و سرعت زیاد به انجام رساند.
سرورها و هاستهای اینترنتی به با سرعتهای بسیار بالا به شبکهی اینترنت متصل هستند و انتقال فایلی که ممکن است دانلود و آپلود آن به یک ساعت زمان نیاز داشته باشد، در عرض چندین ثانیه به انجام میرسد.
نکته امنیتی
پس از پایان انتقال فایل، در اولین فرصت، فایل php انتقال را از روی سرور حذف کنید، همچنین بهتر است انتقال فایل در یک زیرشاخه از دامنهی مقصد به انجام برسد تا در صورت مراجعهی کاربران به دامنهی جدید، به طور اتفاقی، اسکریپت انتقال یا فایل منتقل شده در معرض دید آنان قرار نگیرد.
نکتهی دیگر پیش از اجرای اسکریپت، بررسی وجود نداشتن فایلی همنام با فایل انتقالی در شاخهی فعلی است، زیرا اگر چنین فایلی از قبل موجود باشد بازنویسی خواهد شد.
روش انتقال
پیش از انتقال فایلها از سرور قدیم به جدید، آنها را فشرده کنید و سپس مسیر مستقیم و کامل فایل را در یکی از اسکریپتهای زیر قرار دهید. سپس اسکریپت را در هاست مقصد آپلود نمایید و با وارد کردن آدرس آن در مرورگر، آن را اجرا کنید.
برای مثال اگر میخواهید فایل https://example.com/old-site.tar.gz را به هاست جدید https://example.net منتقل کنید، ابتدا یک شاخهی جدید مانند upload در هاست جدید بسازید، آدرس فایل موجود در هاست قدیمی را در اسکریپت کپی کنید. اسکریپت را در هاست جدید آپلود کنید و در پایان با اجرای دستور https://example.net/transload.php فایل را با سرعت زیاد از هاست قدیمی به هاست جدید منتقل کنید.
انتقال فایل از سرور به سرور دیگر از طریق پروتکل http
اگر فایل موجود در هاست قدیمی با استفاده از پروتکل http یا ftp بدون رمز قابل دسترسی است، از کد زیر استفاده نمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php ini_set( 'max_execution_time', 300 ); ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ROKA Transload</title> </head> <body dir="rtl"> از سایت ما دیدن کنید: <a href="https://rokaweb.ir/">روکا</a> <br> <?php $source = 'http://example.com/old-site.tar.gz'; $fh = fopen( basename( $source ), 'w' ); $ch = curl_init( $source ); curl_setopt( $ch, CURLOPT_FILE, $fh ); curl_exec( $ch ); curl_close( $ch ); fclose( $fh ); echo 'انجام شد'; ?> </body> </html> |
انتقال فایل از هاست به هاست دیگر از طریق پروتکل ftp
اگر قصد انتقال فایل از طریق پروتکل ftp به همراه رمز را دارید، قطعه کد زیر را مطابق نیاز تغییر دهید و از آن برای جابجایی فایل کمک بگیرید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php ini_set( 'max_execution_time', 300 ); ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ROKA Transload FTP</title> </head> <body> <?php $source = 'ftp://example.com/old-site.tar.gz'; $fh = fopen( basename( $source ), 'w' ); $ch = curl_init( $source ); curl_setopt( $ch, CURLOPT_FILE, $fh ); curl_setopt( $ch, CURLOPT_USERPWD, "USER:PASSWORD"); curl_exec( $ch ); curl_close( $ch ); fclose( $fh ); echo 'done'; ?> </body> </html> |
این واقعا حرف نداره
خیلی خیلی سریع عمل می کنه
سلام.
فایل های حجیم رو ارور میده. تا 1.1 گیگ میره بعد میگه 500 ارور داخلی سرور
میشه سریعتر جواب بدین؟
با سلام
این خطا به دلیل طولانی شدن فرآیند انتقال اتفاق میافتد.
سرورهای اشتراکی معمولا سرعت دسترسی به شبکه یا سرعت دسترسی به دیسک سخت را برای هاستها محدود میکنند و به همین دلیل ممکن است فرآیند انتقال خیلی طول بکشد و از زمان مجاز اجرای فایل فراتر برود.
برای برطرف کردن مشکل، اسکریپتی دیگر که با یک روش متفاوت عمل میکند را در این صفحه قرار دادیم.
آیا این روشی هست که به من کمک کنه لینک فایل هایی با حجم بالای 2 گیگ رو به آپلود سنتر شاتل لند منتقل کنم ?
با سلام
خیر این موضوع کاربرد دیگری دارد
عالی وسبک
آفرین
ممنون روش خوبی بود