nikos_90 Δημοσ. 25 Μαρτίου 2015 Δημοσ. 25 Μαρτίου 2015 Φτιάχνω ενα cache συστημα το οποίο θα χρησιμοποιείται για να αποθηκευει δεδομένα απο API requests και έχω το εξής πρόβλημα: θελω αν υπάρχει η δυνατότητα στο τέλος της εκτέλεσης του process να υπάρχει η δυνατότητα να γίνεται ανανεώνει τα cache αρχεια. Εχω υλοποιήσει τον τρόπο αλλα θέλω να βρω έναν τρόπο να μην περιμένω το function που περιέχει το multi_curl να εκτελεστεί αλλα αυτό να γίνεται στο background . Εχω δοκιμάσει διάφορα αλλα δεν έχω βγάλει άκρη ακόμα. Εχει υλοποιήσει κανείς κάτι τέτοιο; εδώ το σημείο: /** * Finalize the cacher, rebuild caches if need.*/public function __destruct(){if(is_array($this->queue) && count($this->queue)>0){foreach($this->queue as $endpoint=>$data){if(is_array($data)){ $fields = $data; }else{ $fields = null; }$this->request_multi($endpoint,$fields,false,false,true);unset($this->queue[$endpoint]);}call_user_func(array($this, 'execute'));//$run = $this->execute(); ob_end_flush();flush();}} Αν θέλετε μπορώ να ανεβάσω όλο το class
lion2486 Δημοσ. 25 Μαρτίου 2015 Δημοσ. 25 Μαρτίου 2015 χμμ.. αν κατάλαβα κάλα αφορά php, θες στο τέλος μιας κλήσης να τρέχεις μια ρουτίνα για επαναδημιουργία της cache σου; Αλλά αυτό θες να γίνεται αφού επιστρέψει η εκτέλεση τα αποτελέσματα. Αν ναι, δεν θα σε βόλευε να βάλεις κάποιο cron job Να το κάνει αυτό περιοδικά; Αλλιώς, αν δεν θες, θα μπορούσες να δημιουργήσεις μια νέα διεργασία για να συνεχίσει να τρέχει αυτό που θες.. 1
exarhis Δημοσ. 25 Μαρτίου 2015 Δημοσ. 25 Μαρτίου 2015 Ο χρήστης θα το εκτελεί ή η cron job ? Αν θέλεις να τρέχει αφού έχει κλείσει ο χρήστης τον browser δες εδώ : [link=http://php.net/manual/en/function.ignore-user-abort.php][/link] 1
defacer Δημοσ. 25 Μαρτίου 2015 Δημοσ. 25 Μαρτίου 2015 Δεν γίνεται. Αν χρειάζεται να κάνεις τέτοια πράγματα τότε βάζεις gearman ή στήνεις κάτι πάνω σε κάποια message queue (ZMQ, rabbit, κλπ). 2
paparovic Δημοσ. 25 Μαρτίου 2015 Δημοσ. 25 Μαρτίου 2015 Φτιάξε ένα endpoint στο API σου που όταν το καλείς με POST (και τις παραμέτρους που θες) επιστρέφει αμέσως HTTP code 200 και κάνει το long running functionality. Στον destructor απλά κάλεσε με curl αυτό το endpoint. Καλύτερα με ένα queue όπως ο gearman που αναφέρθηκε παραπάνω - πολύ πιο clean. 1
nikos_90 Δημοσ. 26 Μαρτίου 2015 Μέλος Δημοσ. 26 Μαρτίου 2015 χμμ.. αν κατάλαβα κάλα αφορά php, θες στο τέλος μιας κλήσης να τρέχεις μια ρουτίνα για επαναδημιουργία της cache σου; Αλλά αυτό θες να γίνεται αφού επιστρέψει η εκτέλεση τα αποτελέσματα. Αν ναι, δεν θα σε βόλευε να βάλεις κάποιο cron job Να το κάνει αυτό περιοδικά; Αλλιώς, αν δεν θες, θα μπορούσες να δημιουργήσεις μια νέα διεργασία για να συνεχίσει να τρέχει αυτό που θες.. Δεν γίνεται. Αν χρειάζεται να κάνεις τέτοια πράγματα τότε βάζεις gearman ή στήνεις κάτι πάνω σε κάποια message queue (ZMQ, rabbit, κλπ). επειδή θέλω να παίζει σαν ανεξάρτητο πακέτο δεν θέλω να συνδέσω εξωτερικά cronjob η να χρησιμοποιήσω επιπλέον messaging libraries οπως το ZeroMQ και Rabbit. Αν θέλει κάποιος να δεί όλο το πακέτο ειναι εδώ https://github.com/nikos90/ApiCacher. Δεν έχει documentation ακόμα και του έχω φτιάξει και πακέτο για όποιον δουλεύει composer: "h-space/api-cacher": "dev-master" Φτιάξε ένα endpoint στο API σου που όταν το καλείς με POST (και τις παραμέτρους που θες) επιστρέφει αμέσως HTTP code 200 και κάνει το long running functionality. Στον destructor απλά κάλεσε με curl αυτό το endpoint. Καλύτερα με ένα queue όπως ο gearman που αναφέρθηκε παραπάνω - πολύ πιο clean. Κάτι τέτοιο σκέφτομουν να κάνω αν δεν βρώ ακρη για να το εκτελέσω έτσι οπως θέλω απλά λιγο διαφορετικά. Το curl θα χτυπάει στο τρέχων route που εχει καλεστεί και θα προσθέσω έναν listener ο οποιος αν δέχεται μία συγκεκριμένη παράμετρο θα ξαναχτίζει το cache. Tο προβλημά μου εδώ ειναι άλλο: δεν γίνεται να στέλνω συγκεκριμένα post request γιατι μπορεί να μην επιτρέπεται λόγω κάποιου routing rule, δηλαδη πχ μπορει να υπάρχει δυνατότητα μόνο για get στο συγκεκριμένο route . Εντάξει γίνεται να το προσαρμόσω και αυτό αλλα είναι η ιδανική για τα δεδομένα υλοποίηση αυτή?
paparovic Δημοσ. 26 Μαρτίου 2015 Δημοσ. 26 Μαρτίου 2015 Εντάξει γίνεται να το προσαρμόσω και αυτό αλλα είναι η ιδανική για τα δεδομένα υλοποίηση αυτή? Για να δεις αν μια λύση είναι ιδανική ή μη, βάζεις κάτω την λίστα με τα requirements που θες να έχει μια ιδανική υλοποίηση και τσεκάρεις. Τσεκάρει αυτή η υλοποίηση όλα τα requirements? Αν όχι, ποια δεν ικανοποιούνται; 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα