el02154 Δημοσ. 17 Ιανουαρίου 2011 Δημοσ. 17 Ιανουαρίου 2011 Γεια σας παιδιά. έχω ένα πρόβλημα με την 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); }
georgemarios Δημοσ. 18 Ιανουαρίου 2011 Δημοσ. 18 Ιανουαρίου 2011 Εχω λιγο καιρο να ασχοληθω και δεν εχω προχειρη PHP να κανω δοκιμες αλλα μερικες σκορπιες σκεψεις μπας και σε βοηθησουν: αν γραψεις το url στον browser σου τι επιστρεφει; Μηπως αργει ο server να στειλε απαντηση (εστω και ενα 404-not found) και η εφαρμογη σου κρεμαει; επισης, δοκιμασε να αυξησεις το timeout, (ισως με την set_time_limit()) μπας και οντως θελει περισσοτερο χρονο απο 1 λεπτο να κανει επαφη.....
el02154 Δημοσ. 18 Ιανουαρίου 2011 Μέλος Δημοσ. 18 Ιανουαρίου 2011 Τελικά το πρόβλημα ήταν πως το default_socket_timeout και το set_time_limit ήταν 60 δευτ και έτσι η fopen προσπαθούσε για 60 δευτ και στο καπάκι κρέμαγε και το script. Δεν μπορούσα να το βρω με τίποτα. Ελπίζω τώρα που το βρήκαμε να μην ταλαιπωρήσει κάποιον άλλον.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.