سؤال

لدي برنامج نصي يتحقق من الاستجابات من خوادم HTTP باستخدام فئات PEAR HTTP.ومع ذلك، فقد اكتشفت مؤخرًا أن البرنامج النصي يفشل على خوادم FTP (وربما أي شيء ليس HTTP أو HTTPS).لقد قمت بتجربة Google، ولكنني لم أر أي نصوص برمجية أو تعليمات برمجية تعرض رمز حالة الخادم من خوادم أخرى غير خوادم HTTP.

كيف يمكنني معرفة حالة مجموعة الأخبار أو خادم FTP باستخدام PHP؟

يحرر:يجب أن أوضح أنني مهتم فقط بالقدرة على القراءة من خادم FTP والدليل الذي أحدده.أريد أن أعرف ما إذا كان الخادم قد توقف/اختفى، أو أنني غير مخول بالقراءة، وما إلى ذلك.

يرجى ملاحظة أنه على الرغم من أنني لا أعرف اللغة في معظم الأوقات، إلا أن موقع الويب بأكمله يعتمد على PHP، لذا فإن حل PHP سيكون الأفضل لسهولة الصيانة والتوسيع في المستقبل.

هل كانت مفيدة؟

المحلول

يعمل HTTP بشكل مختلف قليلاً عن FTP بالرغم من ذلك للأسف.على الرغم من أن كلاهما قد يبدوان متشابهين في متصفحك، إلا أن HTTP يعمل على أساس URI (أي.للوصول إلى المورد أ، لديك معرف يخبرك بكيفية الوصول إليه).

FTP هو خادم مدرسي قديم جدًا.حتى FTP المجهول يعد بمثابة اختراق إلى حد ما، نظرًا لأنك لا تزال تقدم اسم مستخدم وكلمة مرور، يتم تعريفهما فقط على أنهما "مجهول" وعنوان بريدك الإلكتروني.

التحقق من تشغيل خادم FTP يعني التحقق

  1. أنه يمكنك الاتصال بخادم FTP

    if (!($ftpfd = ftp_connect($hostname))) { ... }

  2. أنه يمكنك تسجيل الدخول إلى الخادم:

    if (!ftp_login($ftpfd, $username, $password)) { ... }

  3. بعد ذلك، إذا كان هناك المزيد من الموارد الأساسية التي تحتاج إلى الوصول إليها لاختبار ما إذا كان موقع معين قيد التشغيل، فاستخدم العملية المناسبة عليها.على سبيل المثالعلى ملف، ربما استخدام ftp_mdtm() للحصول على آخر وقت تم تعديله أو على الدليل، راجع ما إذا كان ftp_nlist() يعمل.

نصائح أخرى

ألن يكون استخدام وظيفة PHP FTP* المضمنة أسهل من محاولة تشغيل وظائفك الخاصة؟إذا كان عنوان URI يأتي من مصدر خارج عن سيطرتك، فستحتاج إلى التحقق من التعريف الأولي (http:// أو ftp://، وما إلى ذلك) لتحديد الوظيفة التي يجب استخدامها، ولكن هذا أمر تافه إلى حد ما.إذا كان هناك بروتوكول محدد الآن (يجب أن يكون هناك بالفعل!) فيمكنك محاولة تعيين http افتراضيًا.

إذا كنت تريد قراءة ردود محددة، فسيتعين عليك فتح مأخذ توصيل وقراءة/كتابة البيانات يدويًا.

<?php
$sock = fsockopen($hostname, $port);
?>

بعد ذلك سيتعين عليك نقل البيانات/توزيعها ذهابًا وإيابًا.
سيتطلب ذلك منك قراءة بروتوكول FTP.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top