2016-05-28 7 views
3

Ich mache Modul für ein PHP E-Commerce-System. Diese Systemdatenbank hat 2000 Produkte. Ich muss alle Produkte (einige Werte) an einem Tag aktualisieren. Ich möchte nicht alle Produkte einmal aktualisieren.Kann ich das Zeitlimit für eine Funktion in PHP definieren?

Ich versuche Update jeden Zeitraum 100 Produkte, wenn der Besucher eine Seite öffnen (Modul ist süchtig init - Header). Hier möchte ich das Zeitlimit geben. Wenn dieses 100-Produkt nicht in 20 Sekunden aktualisiert wird, brechen Sie ab und schreiben Sie die letzte aktualisierte Produkt-ID in die Datenbank.

Wie kann ich das tun? Wie diese Funktion 20 Sekunden später weiß, brechen?

+1

time() am Anfang und in der Schleife – splash58

+0

Warum tun Sie dies auf Benutzerinteraktion und nicht in zB ein Cron? Auch das Aktualisieren von nur 2000 Produkten, die ich nicht fühle, sollte etwa 20 Sekunden dauern, geschweige denn für nur 100. –

+0

Ja, ich kann time() in einer Schleife verwenden, ist das kein Problem für einen Server? – user5510975

Antwort

2

Sie können das Zeitlimit für das gesamte PHP-Skript festlegen. Sie können diese Funktion also in ein separates Skript verschieben, dort ein Zeitlimit setzen und es als Unterprozess ausführen.

Ich empfehle, mit Symfony Process-Komponente (ohne Symfony verwendet werden):
http://symfony.com/doc/current/components/process.html

es verwenden können Sie sogar Frist von Ihrem Hauptprozess gesetzt:
http://symfony.com/doc/current/components/process.html#process-timeout

+0

Dies ist, was ich brauche, aber seine Symfony-Komponente. Wie kann ich ohne symfony verwenden? (Danke) – user5510975

+0

'composer require symfony/process' – luchaninov

+0

Wenn Sie composer nicht verwenden können, können Sie es von https://github.com/symfony/process – luchaninov

Verwandte Themen