Προς το περιεχόμενο

Πρόβλημα με php fopen


el02154

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά. έχω ένα πρόβλημα με την fopen στην php. Συγκεκριμένα έχω μια συνάρτηση που ελέγχει εάν μπορεί να ανοιχτεί ένα αρχείο. Αν ναι τότε η συσκευή είναι connected και αν αποτύχει η fopen η συσκευή δηλώνεται σαν disconnected. Το πρόβλημα είναι πως ενώ στην περίπτωση που η fopen μπορεί να ανοίξει το αρχείο παίζουν όλα καλά, στην άλλη περίπτωση αντί να μου επιστρέφει απλά ένα FALSE και να δηλώνεται σαν disconnected μου επιστρεφει "Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\NMS\main.php on line 147" και έτσι σταματά όλο το script.

 

Έχει κανείς καμιά ιδέα γιατί γίνεται αυτό; δηλαδή γιατί αντί να μου εσπιστρεφει απλά ένα FALSE φαίνεται να προσπαθεί η fopen να ανοίξει το αρχείο μέχρι να ξεπεραστεί το όριο τρεξίματος του script; Τον κώδικα τον παραθέτω παρακάτω:

 

>function DiropenRS($entityIP) {

$url = "http://".$entityIP."/cgi-bin/luci/ubiqam";
$opts = array('http' => array('proxy' => 'tcp://test.gr:8888', 'request_fulluri' => true));
$context = stream_context_create($opts);

$up = fopen($url,"r",0,$context);

if (!$up) {
   return(0);
}
else {
   return(1);
}
fclose($up);
}

Δημοσ.

Εχω λιγο καιρο να ασχοληθω και δεν εχω προχειρη PHP να κανω δοκιμες αλλα μερικες σκορπιες σκεψεις μπας και σε βοηθησουν:

αν γραψεις το url στον browser σου τι επιστρεφει; Μηπως αργει ο server να στειλε απαντηση (εστω και ενα 404-not found) και η εφαρμογη σου κρεμαει;

επισης, δοκιμασε να αυξησεις το timeout, (ισως με την set_time_limit()) μπας και οντως θελει περισσοτερο χρονο απο 1 λεπτο να κανει επαφη.....

Δημοσ.

Τελικά το πρόβλημα ήταν πως το default_socket_timeout και το set_time_limit ήταν 60 δευτ και έτσι η fopen προσπαθούσε για 60 δευτ και στο καπάκι κρέμαγε και το script. Δεν μπορούσα να το βρω με τίποτα. Ελπίζω τώρα που το βρήκαμε να μην ταλαιπωρήσει κάποιον άλλον.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...