php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.02.2011, 14:37  
Erfahrener Benutzer
 
Registriert seit: 18.08.2008
Beiträge: 131
PHP-Kenntnisse:
Fortgeschritten
Lightware befindet sich auf einem aufstrebenden Ast
Standard Rat: C Programm oder PHP Script?

Hi,

ich benötige euren Rat.

Auf einem Server läuft eine Schnittstelle, welche von vielen Menschen abgefragt wird. Die Schnittstelle liefert über HTTP die Daten aus.

Wenn ein Mensch eine Abfrage absetzt, dann wird ein Job in einer Datenbank gespeichert.
Jetzt brauche ich ein Script was lauscht (Listener) ob ein neuer Job reingekommen ist oder mehrere.
Dann alle Jobs abarbeitet, kurze Pause einlegt und dann wieder schaut ob neue Jobs da sind.

Das ganze ohne möglichst viel Aufwand...z.b. mit extra workern.

Momentan läuft das über ein PHP Script, was sehr oft einfriert.
Jetzt dachte ich an folgendes:

C Programm, startet Thread, im Thread wird ein Prozess erstellt der für die Abarbeitung der Jobs wie oben beschrieben zuständig ist, dann setzt es bei mir gerade aus ... Thread oder Prozess prüfen ob Zombie? ...

Versteht ihr was ich meine?

Zu was könnt Ihr mir Raten, sodass ich da ne Stabilität reinbringen kann.


Besten Dank!
Lightware ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.02.2011, 14:47  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

http://php.net/manual/de/function.popen.php

1. Dein Hauptscript sucht anch Jobs
2. Findet $x neue, weisst diesen den Status "in progress" zu.
3. Das Script startet für jeden Job einen eigenen Worker via popen().
4. Der Worker arbeitet den Job ab und setzt am Ende den Status auf "finished"
5. Der Worker beendet sich mit Scriptende selbst
6. Das Hauptscript muss nur in regelmäßigen Abständen (sleep(xxx)) die Datenbank auf Jobs mit dem Status "new" prüfen.

So dürfte das Hauptscript nicht mehr einfrieren da es ledeglich nur noch eine "delegierende" Funktion erfüllt.

Ist auch kein großer Aufwand eifnach ein zweites Script zu erstellen für die Abarbeitung der Jobs.

Kommt halt drauf an wie viele Jobs das denn dnan in einem Zyklus werden können. So ab 100 aufwärts wirds kritisch wegen den vielen paralellen Prozessen.

Ich hab mal ähnliches versucht und mir ist meine MySQL Datenbank so ab 600 Prozessen kollabiert.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 25.02.2011, 15:15  
Erfahrener Benutzer
 
Registriert seit: 18.08.2008
Beiträge: 131
PHP-Kenntnisse:
Fortgeschritten
Lightware befindet sich auf einem aufstrebenden Ast
Standard

Hi,

vielen Dank für die hilfreiche Antwort!!!


Problem wird sein, dass ich mit etwa >1000 Abfragen zu rechnen habe, stetig steigend, ich gehe von ca. 100k Abfragen pro Monat aus.

Randnotiz: Mein bisheriges PHP-Script verbraucht 23% CPU im Schnitt (max.30).


Deshalb bin ich am Überlegen da was umzumodeln.
Lightware ist offline   Mit Zitat antworten
Alt 25.02.2011, 15:52  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Was sind denn das für "Jobs"?

Je nachdem was da eigentlich getan werden muss, lohnen sich differenzierte Worker-Prozesse ggf. auch gar nicht und dein Script hat aus anderen Gründen (abseits von Performance) einen Hänger.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 25.02.2011, 16:38  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Ausgehend von deinem Startposting würd ich eher sagen du solltest die Frequenz des Cronjobs feiner granulieren ( kürzere job Prüfzeiten ) und das Cronscript selbst sollte "kleinere Häppchen an Jobs" bekommen.

100000 Abfragen pro Monat sind nichtmal 1 Abfrage ( 0,9 ) pro Minute, Theoretisch kann dein Cronjob minütlich den Job "verspeisen", da sollte nix auslasten wenn da pro Abfrage ein Job ensteht, selbst bei 100 Jobs pro Abfrage nicht. Es sei denn du brichst dir da Vorgänge aus der Krone die sehr rechenintensiv oder speicherintersinv sind.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 28.02.2011, 22:18  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

einfrieren ist auch keine problematik der sprache sondern der programmierung. was genau sind das für tasks?

skalierung über hardware sieht man auch oft - funktioniert auch idr. sehr gut
notyyy ist offline   Mit Zitat antworten
Alt 28.02.2011, 22:43  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Mit sockets kannst du auf einem Port horchen. Mach es wie von tr0y vorgeschlagen: Kleine Häppchen. Der Sockethorcher speichert den Request, mehr nicht, er muss schließlich weiterhorchen.

Ein Cron übernimmt dann alles weitere.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 02.03.2011, 10:30  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Macht ein Cron-Job hier wirklich Sinn? Kann ich den so konfigurieren, dass das Intervall erst wieder startet, wenn der angestoßene Prozess beendet wurde? Sonst habe ich ja mehrere Instanzen gleichzeitig laufen, die sich ggf. in die Quere kommen. Oder ist die Abarbeitung ACID-sicher?
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 02.03.2011, 13:11  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Entweder man merkt sich ob ein Cron gerade aktiv ist oder jeder Cron kann nur die Requests bearbeiten, die in seinem Zeitraum liegen. Wäre zumindest mein Vorgehen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 02.03.2011, 13:36  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

1 Cron-Job-Thread -> X Beliebige Job-Inserter = Kein Umstand, Beine nicht gebrochen, Done.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Werte von einem Php Script in ein anderes Php Script üergeben WINFO2105 PHP Tipps 2009 5 15.07.2009 20:05
Scriptangebot 1 Klick Counter Hosting Script Charbel Scriptbörse 0 23.06.2009 07:43
Firefox startet Script bei Timeout wieder neu Wolla PHP Tipps 2009 2 18.05.2009 18:07
Programm o. Script um Internetseiten zu durchsuchen 22hase Off-Topic Diskussionen 16 25.02.2009 17:11
php script mit html script verbinden Bimbo-01 PHP Tipps 2009 2 21.02.2009 14:11
gleiches script triggern mit und ohne Variablenübergabe steve_2000 PHP Tipps 2008 2 04.12.2008 17:34
[Erledigt] php script und ixed PHP Tipps 2005-2 14 12.10.2005 13:34
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
Tables von DB1 nach DB2 transportieren (Per script) Datenbanken 5 25.08.2004 11:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php rat, c-script für fortgeschrittene, rat php, tr0y php programmierung, was ist ein php rat, php and c program, fortgeschrittene c programmierung, fortgeschrittenen c programmieren, nachrichten zwischen php script und c funktion, extrem schwerer php code, c programm daten an php skript, pr abfragen script php, c script fortgeschritten, php c-programm, php-script stellenangebote, rat c, php script mit c programm, php script einfrieren, oder php, c programmierung für fortgeschrittene

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum