הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   איך לבדוק זמינות שרת? [PHP] (https://hosts.co.il/forums/showthread.php?t=73616)

Matan Levy 15-04-09 16:59

איך לבדוק זמינות שרת? [PHP]
 
אהלן,

אני מנסה לבדוק האם שרת מסויים (לפי אייפי ופורט) זמין, בעזרת fopensocket.

זה הקוד:
קוד:

function checkServer($server_ip, $server_port)
      {
        $ip = gethostbyname($server_ip);
        $port = $server_port;
        $fp = fsockopen($ip, $port, &$errno, &$errstr,10);
        if($fp)
          $status=1;
        else
          $status=0;
        fclose($fp);
        return $status;
      }

הבעיה בפונקציה שלפעמים היא מחזירה 1 גם אם סתם רשמתי אייפי לא קשור,
או שאם השרת לא זמין אני מקבל הודעת שגיאה:

קוד:

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: ���� ���� ���� ���� ���. in.....
וגם

Warning: fsockopen() [function.fsockopen]: unable to connect to *האייפי שאליו ניסיתי להתחבר* (Unknown error) in

למישהו יש דרך יעילה יותר לעשות את זה, ללא שגיאות?
תודה!

Shon12 15-04-09 17:06

תוסיף בקוד:
PHP קוד:

error_reporting(0); 


vadimg88 15-04-09 17:19

זה לא פתרון לבעיה. אלה סתם התחמקות.

Matan Levy 15-04-09 17:20

תודה לך,
זה אכן עובד.

האם יש דרך אחרת לפיתרון הבעיה(vadimg צודק)?

vadimg88 15-04-09 17:33

הוא לא פתר את הבעיה, הוא פשוט הסתיר אותה. זה עדיין קיים והשגיאה עדיין קיימת אתה רק לא רואה אותה במסך.

Shon12 15-04-09 17:45

זה לא נחשב לבעיה אלא לשגיאת אזהרה שהוא אכן לא מצליח להתחבר לשרת, בעצם מה שאתה רוצה לעשות, רק עם טקסט משלך.

vadimg88 15-04-09 17:49

אז צריך לתחום את זה עם try/catch ולהציג הודעה אם זה לא מצליח להתחבר או כל דבר אחר סתם להסתיר את זה, זה לא פתרון.

AlmogBaku 16-04-09 00:38

PHP קוד:

$fp = @fsockopen($ip$port, &$errno, &$errstr,10);
if(
$fp) return true;
else return 
false


LinuxServ 16-04-09 07:17

כתבתי לך משהו פשוט היה לי משמעם
PHP קוד:

$ip "localhost";
$port "80";
if (
$check=@fsockopen($ip,$port,$ERROR_NO,$ERROR_STR,(float)0.5))
     {
     
fclose($check);
     echo 
"on.";
     }
else
     {
    echo 
"off.";

     } 


dor77 16-04-09 11:23

ואדים צוגק, זה כמו שיש לך שגיאה כלשהי ואז אתה מוסיף @, עדיין היא קיימת, האופציה הזו קיימת לדעתי בשביל להסתיר את השגיאות מהגולשים, כי ברגע שרואים שגיאה זה מראה חובבניות, אתה פשוט יכול להסתיר את זה, אבל זה לא נועד בשביל לפתור שגיאות אחרת התכנות היה דבר קל מאוד, בכל דבר כותבים @..חח.


כל הזמנים הם GMT +2. הזמן כעת הוא 05:56.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ