philos Δημοσ. 15 Ιουνίου 2023 Δημοσ. 15 Ιουνίου 2023 (επεξεργασμένο) Έχουμε μια σελίδα σε php που κάνει κάποια redirects (μιλάμε για μια παλιά πλατφόρμα που κάνει redirects με παραμέτρους στο url για να κάνει rebuild κάποια πράγματα βάση id). Ψάχνω μια λύση παρόμοια με την sleep(x) της PHP όμως που να γίνεται στο front-end και να φριζάρει τη σελίδα για ένα εύλογο διάστημα (ας πούμε 10 λεπτά). Το ζητούμενο είναι να παγώσει η σελίδα ακόμα και αν ο server "έχει πέσει" και μετά να συνεχίσει (δοκίμασα να ρίξω τον xampp την ώρα που φόρτωνε η σελίδα με PHP sleep(60) και ο browser έβγαλε το μήνυμα σφάλματος απόκρισης). Έχω βρει κάτι λύσεις σε javascript στο Google, όμως εγώ δεν ενδιαφέρομαι να παγώσω τον javascript κώδικα αλλά όλη τη σελίδα από το να κάνει request το επόμενο redirect (front-end). Το πραγματικό πρόβλημα: το script κάνει 100 δες redirects όλη τη μέρα μέχρι να κάνει rebuild όλα τα στοιχεία και κατά τα ξημερώματα στις 4πμ ο server πέφτει λόγω backup. Έτσι θέλουμε κατά τις 4πμ ο browser να μην κάνει request στον server για 10 λεπτά και μετά το 10 λεπτο να συνεχίσει κανονικά. Ξέρω κουλή λύση αλλά αυτό σκεφτήκαμε. Καμιά ιδέα; Επεξ/σία 15 Ιουνίου 2023 από philos
Moderators Kercyn Δημοσ. 15 Ιουνίου 2023 Moderators Δημοσ. 15 Ιουνίου 2023 Κάτσε γιατί μάλλον κάτι δεν καταλαβαίνω καλά. Αν ρίχνετε τον server πώς περιμένετε να συνεχίσει να σερβίρει το frontend;
philos Δημοσ. 16 Ιουνίου 2023 Μέλος Δημοσ. 16 Ιουνίου 2023 (επεξεργασμένο) 3 ώρες πριν, Kercyn είπε Κάτσε γιατί μάλλον κάτι δεν καταλαβαίνω καλά. Αν ρίχνετε τον server πώς περιμένετε να συνεχίσει να σερβίρει το frontend; Ο server πέφτει για λίγα λεπτά για το backup, οπότε η σελίδα σταματάει να σερβίρεται και ο browser δείχνει σφάλμα (προφανώς). Οπότε σταματάνε και τα redirects, ας πούμε του tool.php?lastid=X. Το θέμα είναι με κάποιον τρόπο πχ με javascript (; ) ή php να κάνουμε μια παύση στο request / redirect πχ για μια περίοδο 10 λεπτών κατά την ώρα που ο server κάνει backup οπότε ο server επανέρχεται και το tool.php μπορεί να συνεχίσει τα redirects ενώ ο admin δεν είναι στο PC να κάνει μόνος του refresh την τελευταία σελίδα tool.php?lastid=X. Δοκίμασα όπως είπα την sleep της PHP αλλά αν πέσει ο server ο browser δίνει άμεσα σφάλμα. Ουσιαστικά έναν "αυτοματισμό" ψάχνουμε. Δυστυχώς κάτι σε front-end ή php, όχι server cmd. μμ τώρα κοίταγα και αυτό: https://www.w3schools.com/jsref/met_win_stop.asp Θα δω μήπως μπορεί να δουλέψει για την περίπτωσή μας, οπότε μετά να τρέχω μια location.reload(). Δεν πειράζει να ξανά τρέξει μια σελίδα tool.php?lastid=X, το ζητούμενο είναι απλά να μην σπάει η ροή λόγω του πρωινού backup που πέφτει ο server. Επεξ/σία 16 Ιουνίου 2023 από philos
Xvipes Δημοσ. 16 Ιουνίου 2023 Δημοσ. 16 Ιουνίου 2023 Και εγώ δεν έχω καταλάβει καλά τι θες να κάνεις αλλά here are my 2 cents. Θες έναν active server να σερβίρεις την html σελίδα, αν ο ίδιος server που κάνει το back up σερβίρει και την html τότε δε μπορείς να κάνεις κάτι όταν ο server πέσει. Αν έχεις αλλού την html σελίδα τότε με async polling το tools.php και javascript ίσως κάνεις αυτό που ψάχνεις. Ουσιαστικά θα χτυπάς το endpoint που θες ανα χ δευτερόλεπτα και μόλις αυτό δώσει response τότε θα προχωρήσεις όπως χρειάζεσαι. Όσο είναι κάτω δε θα κάνεις τίποτα. Θα πω ίσως το αυτονόητο αλλά μήπως να βρεις έναν τρόπο όταν γίνεται το backup να μην πέφτει ο server? 🙈
Moderators Kercyn Δημοσ. 16 Ιουνίου 2023 Moderators Δημοσ. 16 Ιουνίου 2023 Άρα το πρόβλημα είναι ότι όταν κάνετε restart τον server σταματάει το "αυτόματο" redirect που κάνει η σελίδα και κάποιος πρέπει να το ξαναξεκινήσει με το χέρι, σωστά; Κάθε πότε γίνονται αυτά τα redirects; Δε θα μπορούσατε, ίσως, να βάλετε έναν έλεγχο στη js που κάνει τα redirects να περιμένει κάποιο διάστημα (πχ 12 λεπτά, αν λες ότι ο server κάνει 10 λεπτά να ξανασηκωθεί), όταν φτάνει η ώρα να γίνει restart ο server; Κάτι σαν αυτό πχ (τελείως στο πόδι, θέλει φτιάξιμο): let time = new Date(); let timeoutID; const TwelveMinutesInMilliseconds = 720000; if ( time.getHours() === 3 && time.getMinutes() === 59 ) { timeoutID = setTimeout(redirect, TwelveMinutesInMilliseconds); } else { clearTimeout(timeoutID); redirect(); } Η `redirect()` είναι η function που είναι υπεύθυνη να κάνει redirect στο tool.php?lastid=X EDIT: Το async polling που λέει ο Xvipes είναι προφανώς πιο σωστό, αλλά καταλαβαίνω ότι το σύστημα είναι legacy του θανάτου και δεν ξέρω κατά πόσο είναι δυνατόν αυτό.
ΠάρηςΓ Δημοσ. 18 Ιουνίου 2023 Δημοσ. 18 Ιουνίου 2023 Νομίζω ειναι λιγο XY problem. Αν ο στοχος ειναι να γινονται καποια αυτοματοιποιημενα call μπορουν να γινουν και με ενα script (php,python, node και πολλα αλλα) αναλογα και το συστημα που εχεις και να υπαρχει ελεγχος χωρις να χρειαζεται browser.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα