ftp_nb_fput (ftp_nb_fput)
با ftp_nb_fput می توانی فایل محلی را غیرمسدودکننده آپلود کنی. «غیرمسدودکننده (Non-blocking)» یعنی برنامه قفل نمی شود. «دسته فایل (File handle)» همان فایلِ باز محلی است.
ftp_nb_fput چه می کند؟
این تابع از روی یک فایلِ باز، داده را به سرور می فرستد. چون آپلود غیرمسدودکننده است، همزمان می توانی کار دیگری انجام دهی.
سینتکس
ftp_nb_fput(ftp_conn, remote_file, open_file, mode, startpos);
مثال: آپلود غیرمسدودکننده از فایل محلی باز
<?php
// اتصال و ورود به سرور FTP
$ftp_server = "ftp.example.com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$server_file = "serverfile.txt";
// باز کردن فایل محلی برای خواندن
$local_file = "localfile.txt";
$fp = fopen($local_file, "r");
// شروع آپلود غیرمسدودکننده
$d = ftp_nb_fput($ftp_conn, $server_file, $fp, FTP_BINARY);
while ($d == FTP_MOREDATA) {
// اینجا کارهای دیگر انجام بده
// ادامه آپلود را پیگیری کن
$d = ftp_nb_continue($ftp_conn);
}
if ($d != FTP_FINISHED) {
echo "Error uploading $local_file";
exit(1);
}
// بستن اتصال و فایل
ftp_close($ftp_conn);
// توجه: اگر لازم است، fclose($fp) را نیز فراخوانی کن.
?>
گام های عملی سریع
- اتصال و ورود را انجام بده.
- فایل محلی را با
fopenباز کن. ftp_nb_fputرا برای شروع صدا بزن.- در حلقه،
ftp_nb_continueرا تکرار کن. - در پایان، وضعیت
FTP_FINISHEDرا بررسی کن.
نکات و جزئیات
نکته: مقدار بازگشتی یکی از FTP_FAILED، FTP_FINISHED یا FTP_MOREDATA است.
نکته: برای فایل های باینری از FTP_BINARY استفاده کن. خطا کمتر می شود.
هشدار: همیشه منابع را ببند. اتصال و فایل باز را رها نکن.
مرتبط ها و ادامه مسیر
برای پیگیری آپلود از ftp_nb_continue استفاده کن. ورود اولیه هم با ftp_login انجام می شود. اگر به «آپلود غیرمسدودکننده FTP» علاقه داری، ادامه این مجموعه را بخوان.
لینک ها و منابع
- W3Schools: ftp_nb_fput() مرجع تابع و مثال.
- W3Schools: PHP FTP Reference فهرست توابع FTP.
جمع بندی سریع
- آپلود غیرمسدودکننده، برنامه را قفل نمی کند.
- پیشرفت با
ftp_nb_continueپیگیری می شود. FTP_BINARYبرای دقت بهتر پیشنهاد می شود.- همیشه منابع را در پایان ببند.