PHP Script Cron job;

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Pavel
Honorary Member
Δημοσιεύσεις: 1046
Εγγραφή: 08 Αύγ 2003 00:05
Τοποθεσία: UK

PHP Script Cron job;

Δημοσίευση από Pavel » 30 Δεκ 2011 18:59

Καλησπέρα,

δεν ξέρω εάν είναι το σωστό μέρος να ρωτήσω, αλλά here goes.

Έχω φτιάξει μια σελίδα η οποία θέλω να εκτελείται κάθε 2 λεπτά. Επειδή δεν ξέρω εάν ο host server θα μου δίνει την δυνατότητα να δημιουργήσω cron job, υπάρχει κάποια σελίδα που να παρέχει αυτή την υπηρεσία;

Δηλαδή να του δίνω ένα URL, και να ορίζω πως "κάθε 2 λεπτά" θα την "επισκέπτεται" ώστε να εκτελεστεί.

Έχετε καμιά ιδέα;
Εσύ είσαι τρελός.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από Rapid-eraser » 30 Δεκ 2011 20:10

Δεν νομίζω ότι θα το εκτιμήσει ο administrator του server σου αυτό που θες να κάνεις ... καλύτερα να μιλήσεις με τον administrator σου να σου περάσει ένα cron και να γυρίσεις το script σου σε cli μιας και πρόκειται απλά για προγραμματισμένα tasks.

Αν πάλι δεν σε νoίαζει η ακρίβεια εκτέλεσης και δεδομένου ότι έχεις κίνηση επαναλαμβανόμενη πολύ κοντά στα 2 λεπτά, μία τεχνική που έχω δοκιμάσει εγώ είναι κάθε 2 λεπτά να κάνεις Inject με javascript ένα hit στο php αρχείο σου και εν συνεχεία να κάνεις abort το xhr. Στο script σου μέσα βάλε ένα ignore_user_abort() και θα εκτελεστεί μέχρι τέλους ανεξαρτήτως του abort.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Pavel
Honorary Member
Δημοσιεύσεις: 1046
Εγγραφή: 08 Αύγ 2003 00:05
Τοποθεσία: UK

PHP Script Cron job;

Δημοσίευση από Pavel » 30 Δεκ 2011 20:20

Η σελίδα δεν έχει καθόλου επισκέπτες, είναι καθαρά για δική μου χρήση (προς το παρόν), οπότε δεν μπορώ να χρησιμοποιήσω javascript.

Ο administrator γιατί θα έχει πρόβλημα; Ποια η διαφορά με το να έχει γενικότερα traffic η σελίδα;
Εσύ είσαι τρελός.

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3194
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από CyberCr33p » 30 Δεκ 2011 20:57

Σχεδόν όλοι οι webhosts επιτρέπουν την χρήση cron. Για να το τρέχεις κάθε 2 λεπτά θα πρέπει να βάλεις την παρακάτω ρύθμιση. Προσοχή γιατί μπορεί να αλλάζει το path της PHP και σίγουρα αλλάζει και το path του αρχείου.

Κώδικας: Επιλογή όλων

*/2 * * * * /usr/local/bin/php /home/username/public_html/script.php
Εάν το script είναι "βαρύ" καλύτερα να επικοινωνήσεις και με το webhost σου, γιατί αρκετοί δεν επιτρέπουν να τρέχεις cron με τόσο συχνό χρόνο εκτέλεσης (διάβασε και τους όρους χρήσης τους που λογικά θα το αναφέρουν).

Άβαταρ μέλους
Pavel
Honorary Member
Δημοσιεύσεις: 1046
Εγγραφή: 08 Αύγ 2003 00:05
Τοποθεσία: UK

PHP Script Cron job;

Δημοσίευση από Pavel » 30 Δεκ 2011 21:19

ΟΚ παιδιά. Τότε θα σιγουρευτώ πως ο web host επιτρέπει cron jobs.

Ευχαριστώ.
Εσύ είσαι τρελός.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από Rapid-eraser » 30 Δεκ 2011 21:44

Καλησπέρα,
Μάλλον δεν έγινα κατανοητός, το trigger στην σελίδα που θα κάνει το virtual 'cronjob' θα το κάνεις μέσα από το site σου που προφανώς έχεις χρήστες με ενεργοποιημένη την javascript. Θέλει λίγο extra κώδικα ώστε να είναι atomic και να μην το τρέξουν πολλοί χρήστες παράλληλα αλλά και ένα έλεγχο για την επανάληψή.

Αν το script σου πχ κάνει rebuild τα keys σε ένα πίνακα και είναι ένα process cpu intensive το να το τρέχεις μέσα από τον apache είναι πλήρως άσκοπο. Πχ έστω ότι κατεβάζεις ένα feed xml το cpu time που θα γράψει είναι μερικά sec, αν όμως κάνει πχ 10 λεπτά να τελειώσει το download τότε επί 10 λεπτά απασχολείς ένα instance του apache χωρίς λόγο.

Γι' αυτό τον λόγο στα scheduled jobs ποτέ δεν κάνουμε χρήση του httpd αλλά της php από CLI
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

PHP Script Cron job;

Δημοσίευση από panosru » 05 Ιαν 2012 02:36

Αν δεν επιτρέπει cron jobs άλλαξε host.

freds
Δημοσιεύσεις: 320
Εγγραφή: 24 Φεβ 2005 16:11

PHP Script Cron job;

Δημοσίευση από freds » 05 Ιαν 2012 14:59

Rapid-eraser έγραψε: Γι' αυτό τον λόγο στα scheduled jobs ποτέ δεν κάνουμε χρήση του httpd αλλά της php από CLI
Θα μπορούσες να το εξηγήσεις λίγο περισσότερο αυτό με το CLI?

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3194
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από CyberCr33p » 05 Ιαν 2012 15:03

CLI = Command Line Interface

Με λίγα λόγια πρόκειται για την κονσόλα του λειτουργικού συστήματος.

Εάν εκτελείς το php script μέσω CLI τότε γίνεται απευθείας χρήση της PHP χωρίς να μεσολαβεί ο web-server (χωρίς να καταναλώνει πόρους που μπορούν να αποφευχθούν)

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από nbc » 05 Ιαν 2012 16:32

Δεν καταλαβαίνω πως έχει προκύψει αυτή η άποψη... Πιθανώς από την εποχή του CGI?

- Ο web server είναι ήδη φορτωμένος
- Αν η php τρέχει ως module, είναι και αυτή φορτωμένη. Αν τρέχει ως fastCGI, το πιθανότερο είναι να υπάρχει διαθέσιμο process και να μη χρειαστεί νέο.

Συνεπώς, η χρήση ενός HTTP request, συνεπάγεται (στις περισσότερες περιπτώσεις) lynx/wget + 2 sockets + μερικά descriptors. Κάτι kilobytes δηλαδή...

Αντιθέτως, η κλήση του CLI συνεπάγεται πάντοτε νέο PHP process με όλα τα συναφή. Κάτι megabytes δηλαδή, συν το χρόνο να φορτωθούν όλα αυτά... Χώρια τα settings, το environment που είναι άλλα 'ντ' άλλων και συνήθως προκαλεί πρόβλημα, την έλλειψη του query string, και άλλα που πιθανώς μου διαφεύγουν αυτήν τη στιγμή.

Νομίζω πως το τι είναι καλύτερο εξαρτάται από το setup και δεν πρέπει να γενικεύουμε. Χώρια που σε αυτές τις περιπτώσεις χρησιμοποιούνται συνήθως περίοδοι της τάξεως των λεπτών που φαντάζουν αιωνιότητα μπροστά στα ms του οποιουδήποτε overhead...

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3194
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από CyberCr33p » 05 Ιαν 2012 16:51

Κοίτα εάν τρέχει κάτι απλό που εκτελείτε σε λίγα δευτερόλεπτα όπως και να το τρέξει δεν θα έχει θέμα. Εγώ όταν ανέφερα τα παραπάνω είχα στο μυαλό μου php script που παίρνει πολύ χρόνο για να εκτελεστεί, για παράδειγμα να τραβάει feeds από δεκάδες sites και να περνάει τα νέα άρθρα σε κάποιο CMS. Σε τέτοιες περιπτώσεις μπορεί να πάρει 5-15 λεπτά να εκτελεστεί οπότε γιατί να τρώει πόρους από τον web-server όταν μπορείς να το αποφύγεις; Γενικά οι περισσότεροι webhosts σήμερα κάνουν χρήση suphp οπότε το php process δεν το γλιτώνεις. Λίγοι δουλεύουμε με FastCGI. Πάντως έχεις δίκιο ότι ανάλογα τη χρήση μπορεί να είναι καλύτερος ο ένας τρόπος ή και ο άλλος ή να έχει ελάχιστη διαφορά (που το τελευταίο πιστεύω είναι και το πιο πιθανό).

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από nbc » 05 Ιαν 2012 17:02

OK, δεκτά τα επιχειρήματα (διάρκεια εκτέλεσης / suphp) που αναφέρεις...

Thx!

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

PHP Script Cron job;

Δημοσίευση από Rapid-eraser » 05 Ιαν 2012 18:23

Όπως και να έχει ένα php που εκτελείτε από cli καταναλώνει λιγότερους πόρους από το να τρέξει πίσω από κάποιο httpd ( ιδίως αν τρέχει κάτω από apache )

Επίσης μέσα από cli μπορείς να έχεις καλύτερο monitoring όσων αφορά το process το ίδιο. Query string δεν παίρνει αλλά στο cli έχεις arguments που μπορείς να περάσεις για να περάσεις πληροφορία.

Άσε που έχεις ένα λιγότερο dependency και point of failure.

Επίσης υπάρχει το θέμα του elevation μπορεί το συγκεκριμένο script να θες να τρέχει σαν συγκεκριμένος χρήστης συστήματος που η χρήση του httpd ενδεχομένως να δημιουργεί περιορισμούς (πχ συγκεκριμένο startup χρήστη ή environment και configuration που είναι για web server )

Ένα πολύ ενδιαφέρον που μπορείς να κάνεις είναι να πάρεις με pipe το output του script ( πχ ένα report ) και να το στείλεις με ένα email ακόμα και αν το script χτυπήσει κάποιο fatal error που δεν μπορείς να κάνεις recover.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες