یک اسکریپت PHP بنویسید که به یک سرور FTP متصل شود، قبل از آپلود یک فایل محلی با استفاده از ftp_nb_alloc فضای لازم را روی سرور اختصاص دهد و سپس فایل را بهصورت غیرمسدودی آپلود کند و وضعیت پیشرفت را در خروجی نشان دهد.
7.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:30 0.0
برای حل این مسئله از توابع FTP در PHP استفاده کنید: ابتدا با ftp_connect و ftp_login به سرور وصل شوید و در صورت نیاز ftp_pasv را فعال کنید، سپس با استفاده از filesize اندازه فایل محلی را بدست آورید و ftp_nb_alloc را برای تخصیص فضا فراخوانی کنید. پس از آن با ftp_nb_put آپلود غیرمسدودی را شروع کنید و در یک حلقه با ftp_nb_continue وضعیت را بررسی کنید تا زمانی که FTP_MOREDATA/FTP_FINISHED یا FTP_FAILED دریافت شود؛ برای جلوگیری از مصرف زیاد پردازنده بین تکرارها از usleep یا sleep استفاده کنید و در نهایت اتصال را با ftp_close ببندید. نکات: وجود پشتیبانی سرور از ftp_nb_alloc را بررسی کنید، خطاها را هندل کنید و از نوع انتقال مناسب (FTP_BINARY یا FTP_ASCII) استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته: مطمئن شوید سرور FTP از ftp_nb_alloc پشتیبانی میکند و در صورت عدم پشتیبانی کدی جایگزین یا خطا را مدیریت کنید. همچنین حتما حالت انتقال را به FTP_BINARY تغییر دهید و در زمان انتظار از usleep استفاده کنید تا بار CPU کاهش یابد. در حلقه ftp_nb_continue، به دقت به حالات FTP_MOREDATA، FTP_FINISHED یا FTP_FAILED واکنش نشان دهید و خطاها را لاگ کنید. نهایتاً پس از تکمیل اتصال را با ftp_close ببندید و برای امنیت از FTPS استفاده کنید.
گزارش