[PHP] script uitvoeren met vertraging

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gelijk even een tweede probleempje, omdat jullie misschien een goed idee hebben hoe dit opgelost kan worden.

Betreft hier ook weer een probleempje met het uitlezen van gegevens uit TomTomWork. Probleem is dat ik op een bepaald moment een heleboel tankgegevens van een serie aan voertuigen wil invoeren.

Bij deze tankbeurten wordt de kilometerstand opgevraagd vanuit TomTomWork. Deze gegevens moet ik per voertuig opvragen. Hierdoor moet ik bij het inlezen meerdere verzoeken om gegevens doen bij TomTom, al snel een query of 100 per inlees ronde.

TomTom stelt echter als eis dat er maximaal 6 van deze query's per minuut worden uitgevoerd. Anders dan worden alle volgende verzoeken voor een minuut genegeerd. Met later een volledige ban als het te vaak gebeurt. Ik moet de reeks aan query's dus op de een of andere manier bufferen.

Hierbij moet ik natuurlijk ook rekening houden dat de max execution time van mijn PHP script.

Mijn vraag: Wie heeft hier een vernuftige oplossing voor?

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

sleep();
Je max execution time kun je verhogen, of verstandiger: PHP als CLI uitvoeren (command line). Dan heb je geen max execution time en geen problemen met browser time-outs.

Eventueel kun je vanuit een 'browser script' het command line script uitvoeren met bijvoorbeeld exec.

Acties:
  • 0 Henk 'm!

Verwijderd

sleep(s);
s = aantal seconden

De maximale tijd kan je met ini_set() aanpassen, of command-line je script uitvoeren.

[ Voor 59% gewijzigd door Verwijderd op 17-11-2007 18:04 ]


Acties:
  • 0 Henk 'm!

Verwijderd

-snip-

[ Voor 97% gewijzigd door Verwijderd op 27-05-2008 15:03 ]


Acties:
  • 0 Henk 'm!

  • HarmenM
  • Registratie: Juni 2001
  • Niet online
Ik weet niet of je het scriptje in CLI-modus kunt draaien, maar dat zal wat dit betreft ideaal zijn.
Mocht het toch via een browser moeten, zou ik eens nadenken over een "AJAX-gebaseerde" oplossing, zodat je niet een lange http-requests, met risico op timeouts, hoeft te draaien.

PHP:
1
ignore_user_abort();

Is misschien een handige functie, mocht het browserbased moeten zijn.