Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εστω οτι εχω ενα php "προγραμμα" το οποιο αντλει δεδομενα απο καπου. Η διαδικασια λογικα θα ειναι σε infinity loop, πως μπορω εγω να "επεμβω" απο αλλο php αρχειο (στο ιδιο σερβερ) ωστε να σταματησω το loop;

 

πχ

>
<?php
whlie(1)
{
do somthing
if(!isRunnging())
break;
}

?>

 

 

Εγω σκεφτομαι, να φτιαξω ενα table (sql) με ενα row το οποιο θα παιζει το ρολο της σημαιας και η isRunning να εχει ενα select το οποιο θα βλεπει διαβαζει το row κλπ κλπ. υπαρχει κατι πιο απλο;

Δημοσ.

Εστω οτι εχω ενα php "προγραμμα" το οποιο αντλει δεδομενα απο καπου. Η διαδικασια λογικα θα ειναι σε infinity loop, πως μπορω εγω να "επεμβω" απο αλλο php αρχειο (στο ιδιο σερβερ) ωστε να σταματησω το loop;

 

πχ

>
<?php
whlie(1)
{
do somthing
if(!isRunnging())
break;
}

?>

 

 

Εγω σκεφτομαι, να φτιαξω ενα table (sql) με ενα row το οποιο θα παιζει το ρολο της σημαιας και η isRunning να εχει ενα select το οποιο θα βλεπει διαβαζει το row κλπ κλπ. υπαρχει κατι πιο απλο;

 

Βάσει της ίδιας λογικής που ανέφερες, μπορείς να τσεκάρεις για την ύπαρξη κάποιου αρχείου στον web server. Πχ ανεβάζεις (upload) το αρχείο stop.txt στον κατάλογο /uploads του site σου. Το php script πρέπει να τσεκάρει την ύπαρξη ή μη του αρχείου για να αποφασίσει αν θα συνεχίσει να εκτελείται ή όχι. Αν βρει το αρχείο, το διαγράφει και σταματά την εκτέλεση.

 

Από περιέργεια, γίνεται να έχεις ένα php που να εκτελείται επ' άπειρον? Δεν υπάρχει κάποια global μεταβλητή που ορίζει τον max χρόνο εκτέλεσης?

Δημοσ.

Από περιέργεια, γίνεται να έχεις ένα php που να εκτελείται επ' άπειρον? Δεν υπάρχει κάποια global μεταβλητή που ορίζει τον max χρόνο εκτέλεσης?

> php.ini -> max_execution_time 

 

και πως να το παραβλέψεις link

Δημοσ.

> php.ini -> max_execution_time 

 

και πως να το παραβλέψεις link

 

Χα... έπρεπε να το φανταστώ... devil.png

 

 

 

 

Η αλήθεια είναι πως κατά 99% αυτό που πας να κάνεις είναι λάθος ή bad practice.

 

+1

Δημοσ.

Ειναι κατι σαν service

 

Αν έχω μαντέψει σωστά θέλεις να φτιάξεις ένα real time application. Έχεις ένα service π.χ. live score του Euro 2012 και θέλεις να checkάρεις για ανανεώσεις κάθε δευτερόλεπτο (υποθετικά). Αν ναι δες εδώ ένα παράδειγμα long polling. Στη συνέχεια ρίξε μια ματιά στο socket.io

Επίσης μπορείς να κοιτάξεις και για κάποιο pubsub μηχανισμό όπου ειδοποιήσαι όταν υπάρχει κάτι νέο. Δες το xmpp pubsub

 

Γράφω ένα live stream σαν μέρος ενός project αυτό το καιρό με το pubsub της Redis που είναι απίστευτα εύκολο, αλλά θα πρέπει φυσικά να χρησιμοποιήσεις τη redis κάπου στην εφαρμογή σου.

 

Αν τώρα το service είναι σε foreign host ... δες ή ρώτα τους αν έχουν κάποιο subscription (λογικά δε θα έρχεται δωρεάν). Το να έχεις κάποιο infinite loop σε php, ακόμη κι αν δουλέψει αποδοτικά για την εφαρμογή σου (που αμφιβάλω) πιστεύω ότι θα το blockαρει o sys admin του server του service...

Δημοσ.

Εχω ενα προγραμμα που τρεχει στο pc μου. (γραμμενο σε c++/win32)

Αυτο που κανει ειναι να στελνει πακετα καθε χ χρονο. Δεν με ενδιαφερει η απαντηση απο την αποστολη, με νιαζει μονο να τα στειλω.

 

Επειδη για να τρεχει αυτο το προγραμμα θα πρεπει να ειναι ανοικτο το πισι μου, θελω να το ξαναγραψω σε php και να το ανεβασω σε εναν free host για να μην εχω ανοικτο το πισι.

 

socket δεν θελω, εφοσον το εχω κανει σε winhttp και αποτι βλεπω στη php υπαρχει αντιστοιχο api (curl).

 

Το θεμα μου ειναι, πως μπορω να κανω emulate -να το πω- στην php ενα process οπως στα windows. Δηλαδη να εχω μια σελιδα που να παιζει το ρολο του desktop και μια αλλη το ρολο του προγραμματος.

Δημοσ.

ουπς έπεσα τελείως έξω.

 

Ίσως με cron job??

Θα πρέπει όμως να δεις αν μπορείς να το κάνεις στο free host που είσαι.

Δημοσ.

Εχω ενα προγραμμα που τρεχει στο pc μου. (γραμμενο σε c++/win32)

Αυτο που κανει ειναι να στελνει πακετα καθε χ χρονο. Δεν με ενδιαφερει η απαντηση απο την αποστολη, με νιαζει μονο να τα στειλω.

 

Επειδη για να τρεχει αυτο το προγραμμα θα πρεπει να ειναι ανοικτο το πισι μου, θελω να το ξαναγραψω σε php και να το ανεβασω σε εναν free host για να μην εχω ανοικτο το πισι.

 

socket δεν θελω, εφοσον το εχω κανει σε winhttp και αποτι βλεπω στη php υπαρχει αντιστοιχο api (curl).

 

Το θεμα μου ειναι, πως μπορω να κανω emulate -να το πω- στην php ενα process οπως στα windows. Δηλαδη να εχω μια σελιδα που να παιζει το ρολο του desktop και μια αλλη το ρολο του προγραμματος.

 

Δεν υπάρχει περίπτωση σε free hosting να βρεις php execution time > 60 secs. Πρέπει να βρεις λύση με free hosting που να σου δίνει δυνατότητα χρήσης cron.

Δημοσ.

Αυτό που λέει ο hawkpilot.

 

Όσο για το πώς μπορείς να ανιχνεύσεις μια συνθήκη τερματισμού η οποία θα ενεργοποιείται "εξωτερικά": δεν υπάρχει εύκολος τρόπος. Αν το loop κρατάει ένα σεβαστό χρονικό διάστημα (ας πούμε όχι λιγότερο από 1 sec) θα μπορούσες να κάνεις κάτι με database ή με flat file ή με async socket και stream_select/socket_select γιατί ο φόρτος του ελέγχου δε θα ήταν μεγάλος μπροστά στην ολική διάρκεια του loop.

 

Αν το loop είναι γρήγορο τότε η μόνη ημι-αξιοπρεπής λύση είναι με το semaphore extension το οποίο όμως δεν είναι standard (αποκλείεται σε shared host) και επίσης δεν υποστηρίζεται καν σε Windows.

 

Γενικά αυτού του είδους οι δουλειές δεν γίνονται καλά σε PHP.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...