takis456 Δημοσ. 13 Φεβρουαρίου 2006 Δημοσ. 13 Φεβρουαρίου 2006 Έχω ένα πρόβλημα με την συνάρτηση fsockopen. Έχω τον κώδικα: $fs = fsockopen("ip", "port", $errno, $errstr); if($fs) { fwrite($fs, $msg); fclose($fs); } Ο κώδικας αυτός συνδέεται στην ip και port που του έχω ορίσει και μόλις συνδεθεί στέλνει το $msg. Το πρόβλημα είναι ότι ο server στον οποίο συνδέεται δεν είναι συνέχεια on με αποτέλεσμα όταν δεν μπορεί να συνδεθεί να φαίνεται το παρακάτω μήνυμα και σταματάει η εκτέλεση του script: Warning: fsockopen(): unable to connect to ip:port in /......./scriptfile.php on line tade Σύμφωνα με το manual: If the call fails, it will return FALSE and if the optional errno and errstr arguments are present they will be set to indicate the actual system level error that occurred in the system-level connect() call. If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the connect() call. This is most likely due to a problem initializing the socket. Note that the errno and errstr arguments will always be passed by reference. Άρα δεν έπρεπε αντί να σταματάει το script να συνέχιζε η εκτέλεση του και απλά να έβαζε στο $fs την τιμή false?
httpd Δημοσ. 13 Φεβρουαρίου 2006 Δημοσ. 13 Φεβρουαρίου 2006 $fs = fsockopen("ip", "port", $errno, $errstr); if($fs) { fwrite($fs, $msg); fclose($fs); } To manual καλά τα λέει. Εσύ όμως λές: if($fs) { πράγμα το οποίο δεν βοηθάει καθόλου κατα την άποψη μου. Γιατί είτε true είτε false η μεταβλητή fs θα δημιουργηθεί. Αρα το πιο σωστό θα είναι το εξής αφου σου λέει το manual ότι επιστρέφει true or false: if($fs == "true") { do this; } else { die("i can't connect server seems to be down"); } Εναλλακτικά μπορείς να κάνεις το εξής: $fs = @fsockopen("ip", "port", $errno, $errstr); Αρα αν είναι false τότε δεν θα δημιουργηθεί και η μεταβλητή $fs Μια πρόταση κάνω δεν έχω παίξει ποτέ με sockets στην php.
takis456 Δημοσ. 13 Φεβρουαρίου 2006 Μέλος Δημοσ. 13 Φεβρουαρίου 2006 Έστω και λάθος να είναι.. δεν θα πρέπει να έγραφε ότι το λάθος το προκαλεί η fwrite αντί για την fsockopen?
panosru Δημοσ. 13 Φεβρουαρίου 2006 Δημοσ. 13 Φεβρουαρίου 2006 ektos apo if mporeis na baleis kai ena "mute" prin thn function sou px: > $fs = @fsockopen("ip", "port", $errno, $errstr); if($fs) { @fwrite($fs, $msg); @fclose($fs); }
panosru Δημοσ. 13 Φεβρουαρίου 2006 Δημοσ. 13 Φεβρουαρίου 2006 telika den einai kalo na mhn diabazeis oloklra ta posts... :/ sorry httpd den eida pos to eipes :S PS: oraio nick httpd!
httpd Δημοσ. 13 Φεβρουαρίου 2006 Δημοσ. 13 Φεβρουαρίου 2006 telika den einai kalo na mhn diabazeis oloklra ta posts... :/sorry httpd den eida pos to eipes :S PS: oraio nick httpd! Υπάρχουν πολλοί τρόποι πάντα να κάνεις κάτι το θέμα είναι τι σε βολεύει καλύτερα Cheers
takis456 Δημοσ. 13 Φεβρουαρίου 2006 Μέλος Δημοσ. 13 Φεβρουαρίου 2006 Όντως ωραίο nick Thanx παίδες.. το πρόβλημα ήταν ότι αυτό το μήνυμα εμφανιζόταν αλλά σε πιο κάτω σημείο του κώδικα άλλαζαν τα headers και γινόταν ψιλομπάχαλο. (Δεν μπορούσε να αλλάξει τα headers αφού είχε ήδη εμφανίσει html κείμενο - το κείμενο με το error)
panosru Δημοσ. 13 Φεβρουαρίου 2006 Δημοσ. 13 Φεβρουαρίου 2006 dld eixes problhma me ta headers? mporeis na kaneis to eksis: ob_start ob_end_flush px exeis kati ths morfhs: > <?php ob_start(); ?> <html> . . . . </html> <?php ob_end_flush(); ?> kai sto telos ths selidas sou bale ob_end_flash
takis456 Δημοσ. 14 Φεβρουαρίου 2006 Μέλος Δημοσ. 14 Φεβρουαρίου 2006 Χμ.. ενδιαφέρον.. thanx.. αν και εδώ δεν μπορώ να το χρησιμοποιήσω (είναι γραμμένα τα script files και εγώ απλά τα modάρω) αλλα στο μέλλον θα μου φανεί χρήσιμο πιστεύω
panosru Δημοσ. 14 Φεβρουαρίου 2006 Δημοσ. 14 Φεβρουαρίου 2006 koita kai gramena na einai efoson ta kanei ola ayta include ena arxeio to index.php kai genikotera an oxi ayto opoiodhpote allo master file, mporeis na grafeis ton kodika ayton se ola ta master files sou (prosoxh omos oxi sta include files mono sta master kai na mhn yparxei tipota prin apo tpo ob_start.
bandito Δημοσ. 14 Φεβρουαρίου 2006 Δημοσ. 14 Φεβρουαρίου 2006 if($fs == "true") { do this; } else { die("i can't connect server seems to be down"); } Aυτό ομολογώ οτι δεν το κατάλαβα. Anyway το if ($fs === TRUE) λογικά πρέπει να παίζει Γενικά για mixed vars που το 0 δεν σημαινει απαραίτητα false, πρεπει να χρησιμοποιούνται οι operators === και !==
panosru Δημοσ. 14 Φεβρουαρίου 2006 Δημοσ. 14 Φεβρουαρίου 2006 @httpd : den exo asxolhthei apo socets alla ap' oti blaipo sto manual den leei pouthena pos epistrefei true se periptosh pou leitourgei paramono false se periptosh pou den leitourghsei opote kalo tha htan na exoume ton kodika etsi: > if($fs === false) { // to mhnhma sfalmatos mas } else { // oi prakseis mas } episeis na anafero pos to TRUE kai to FALSE einai boolean type opote den einai sosto na to exoume se quotes hte single hte double episeis o telesths(operator) ==(equal to) elenxei an kati periexei kati to opoio tou orisame eno o telesths(operator) ===(identical) elenxei an kati periexei kati to opoio tou orisame kai ayto to opoio tou orisame einai idios typos me to kati px: > <?php $foo = "1"; if ($foo == 1) { print ("TRUE"); } else { print ("FALSE"); } // Emfanizei TRUE gia ton logo oti to $foo periexei thn timi 1 print ("<hr>"); if ($foo === 1) { print ("TRUE"); } else { print ("FALSE"); } // Emfanizei FALSE gia ton logo oti to 1 den einai idios typos me to $foo asxeta an to $foo periexei thn timi 1 ?>
httpd Δημοσ. 14 Φεβρουαρίου 2006 Δημοσ. 14 Φεβρουαρίου 2006 Δεν κοίταξα στο manual να δω πως ακριβώς συντάσεται και τι επιστρέφει. Εγώ πιάστηκα με τα λεγόμενα του φίλου. If the call fails, it will return FALSE and if the optional errno and e .................. Οσο για το true - false boolean έχεις δίκιο εγώ εκείνη την στιγμή έκανα assing TRUE value σε μια μεταβλητή σε ένα project Που δούλευα και τα έκανα *ουνι καπέλο!! :/ My 2 cents
panosru Δημοσ. 14 Φεβρουαρίου 2006 Δημοσ. 14 Φεβρουαρίου 2006 lool no problem! eksalou kai ego apo to manual meta eida ti epistrefei, den mporoume na gnorizoume ta panta eksalou idios an den exoume asxolhthei me ayta! eilhkrina den mou xreiastike pote h fsockopen, xoris omos ayto na thn kathista axrhsh function - tipota den einai axrhsto ola exoun logo yparkseis - to anafero gia na mhn pareksighthei kaneis
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.