Vraag & Antwoord

Webprogrammeren & scripting

Cron activeren voor periodiek uitvoeren PHP-scripts?

7 antwoorden
  • Hallo! Ik wil met PHP bv. elk uur checken of er nieuwe berichten in mijn database zijn gekomen. Zo ja, dan moeten die berichten naar alle geregistreerde gebruikers worden gestuurd (kunnen er 10 zijn, maar ook 1000). Cron is daarvoor ideaal. Alleen: ik heb geen eigen server en mijn hosting provider heeft allerlei beperkingen aan staan (safe_mode, open_basedir, etc.) en PHP draait als Apache-module en (dus) kan ik niet bij de shell. Mijn vraag: bestaat er desondanks nog een manier om cron, of een variant, aan de praat te krijgen? Dank!
  • misschien wel, zou ik niet weten; wat je ook zou kunnen proberen is een in een script dat elke pagina wordt weergeven er een bepaalde kans is dat een stuk code wordt uitgevoerd. bijvoorbeeld voor elke 100 keer dat het script wordt geladen wordt één keer alle berichten verstuurd. minder precies, maar dat is in dit geval ook niet zo belangrijk denk ik...
  • Bedankt voor je reactie! Wat je noemt is in principe een oplossing en inderdaad, het maakt niet uit of het heel precies is *wanneer* het script wordt uitgevoerd (exact per uur of wat dan ook). Wat mij echter belemmert om iets dergelijks te doen, is dat er per uur best 1000 mails verstuurd kunnen worden. Dat wordt erg veel als dat proces door een webrequest met een script wordt geactiveerd - dan krijg je mogelijk een server timeout voor degene die de pagina bekijkt. Het zou dus een achtergrondproces moeten zijn die de mails op de achtergrond, en niet via een reguliere webaanroep, verwerkt. Lastig in een afgeschermde, door hosting provider gecontroleerde omgeving?! Meer reacties welkom!
  • Je kunt dat script natuurlijk ook zo inelkaar zetten, dat het minder belastend is voor de server. Dus niet alle mails in een keer, maar in batches van 10, en dan 10 seconden wachten oid.
  • Ook bedankt voor je reactie! Klopt, en zelf nog niet aan gedacht, een batch is een oplossing! Alleen als ik erover doordenk, dan zou dat betekenen dat zodra er een webrequest binnenkomt, mijn script kijkt of er nog mails te versturen zijn en zo ja, of dat zoveel seconden geleden is (om serverbelasting te voorkomen). Hierdoor ben ik echter afhankelijk van webrequests...dus als er een halve dag niemand langs komt terwijl er wel nieuwe berichten verstuurd moeten worden, dan wordt mijn batchproces niet voltooid. *moeilijk*
  • Heb je verder geen kennisen of vriending oid die een server hebben die ze geregeld iets aanroepen voor je? Soort externe Cronjob dus.
  • Worden de veranderingen aan je database alleen via je site gesubmit? Zo ja, dan kun je de submit als actie gebruiken om geregistreerde bezoekers een mail te sturen. Als er dan een halve dag geen webrequests komen, dan betekent dat ook dat er geen nieuwe berichten zijn en dus ook niets verstuurd zou hoeven worden.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.