From mas at spuetz.ath.cx Mon Feb 12 10:11:42 2007 From: mas at spuetz.ath.cx (Martin Spuetz) Date: Mon, 12 Feb 2007 10:11:42 +0100 Subject: [php] mICQ und PHP In-Reply-To: <043401c74e10$9e944970$1500a8c0@lappi> References: <043401c74e10$9e944970$1500a8c0@lappi> Message-ID: <45D02F4E.9020002@spuetz.ath.cx> Hallo Eric, Eric Marten wrote: > Fals es unmöglich ist, dann nennt mir evtl eine Alternative. > Vllt auch eine Alternative zu mICQ... gaim lässt sich unter der Konsole betreiben, evtl. kann man das einsetzen. Gruss, Martin From lists at sebastianmendel.de Mon Feb 12 13:24:28 2007 From: lists at sebastianmendel.de (Sebastian Mendel) Date: Mon, 12 Feb 2007 13:24:28 +0100 Subject: [php] Array-Funktionen vs. literale Angabe In-Reply-To: <45CF2E1F.6040308@cipher-code.de> References: <45CF2E1F.6040308@cipher-code.de> Message-ID: <45D05C7C.8060808@sebastianmendel.de> Yannik Hampe schrieb: > > Hannes H. wrote: >> Schönn Sonntag, allerseits! > Hallo Hannes, >> Ich möchte die Gelegenheit nutzen und ein Thema im Zusammenhang mit >> Arrays anbringen, dass mich schon länger beschäftigt: >> >> Für viele Aufgaben, die die Behandlung von Array betrifft, gibt es in >> PHP zwei Wege: >> >> a) die spezielle Array-Funktion >> > z.B. array_push($array, $var); >> b) die "literale" Angabe >> > z.B. $array[] = $var >> >> Welche davon ist die bessere Wahl? Gibt es überhaupt intern einen >> Unterschied? > > ja, es gibt einen unterschied: a) ist die Verwendung eines > Sprachelements und b) ist die Verwendung einer Funktion. a) ist ca. > doppelt so schnell wie b). > (6ms vs 13ms bei 10000x[] vs 10000x array_push auf meinem Athlon 64 > 3700+, 2GB DDR2 Win2k php 5.2). hast du da jetzt was verdreht? -- Sebastian Mendel www.sebastianmendel.de From liste at wernerlaude.de Mon Feb 12 13:39:32 2007 From: liste at wernerlaude.de (Werner Laude) Date: Mon, 12 Feb 2007 13:39:32 +0100 Subject: [php] Zugriffsschutz Message-ID: <45D06004.6080109@wernerlaude.de> Hallo. Ich habe für einen Auftritt einen Zugriffschutz für eine bestimmte Seite realisiert. Dort kann der authorsierte Kunde dann eine zip Datei laden. zip Allerdings kann er dann den direkten link zur zip speichern und weiter zugreifen.. Wie kann ich das verhindern ? Idee ? Mir fällt da gerade nix ein.. Gruß Werner From hpf at abarcar.com Mon Feb 12 14:01:40 2007 From: hpf at abarcar.com (Helmut P. Fleischhauer) Date: Mon, 12 Feb 2007 14:01:40 +0100 Subject: [php] Zugriffsschutz In-Reply-To: <45D06004.6080109@wernerlaude.de> References: <45D06004.6080109@wernerlaude.de> Message-ID: <45D06534.9070206@abarcar.com> Werner Laude wrote: > Hallo. > > Ich habe für einen Auftritt einen Zugriffschutz für eine bestimmte Seite > realisiert. > Dort kann der authorsierte Kunde dann eine zip Datei laden. > > zip > > Allerdings kann er dann den direkten link zur zip speichern und weiter > zugreifen.. > Wie kann ich das verhindern ? Idee ? Mir fällt da gerade nix ein.. > > Gruß > Werner > **************** Hallo, habe einen download einmal so realisiert. Downloaddatei liegt ausserhalb doc root Für einen neuen download wird die Datei kopiert und umbenannt - z.B. in 2734GDFJ7893.zip Liegt ebenfalls ausserhalb doc root. Zugriff erfolgt über download script Nach 24 Stunden wird die Datei gelöscht Grüsse Helmut P. Fleischhauer From lists at sebastianmendel.de Mon Feb 12 13:53:41 2007 From: lists at sebastianmendel.de (Sebastian Mendel) Date: Mon, 12 Feb 2007 13:53:41 +0100 Subject: [php] Zugriffsschutz In-Reply-To: <45D06004.6080109@wernerlaude.de> References: <45D06004.6080109@wernerlaude.de> Message-ID: <45D06355.4010904@sebastianmendel.de> Werner Laude schrieb: > Hallo. > > Ich habe für einen Auftritt einen Zugriffschutz für eine bestimmte Seite > realisiert. > Dort kann der authorsierte Kunde dann eine zip Datei laden. > > zip > > Allerdings kann er dann den direkten link zur zip speichern und weiter > zugreifen.. > Wie kann ich das verhindern ? Idee ? Mir fällt da gerade nix ein.. noch nie verwendet, aber vielleicht hilfts: http://php.net/http http://php.net/http_send_content_disposition http://php.net/http_send_file -- Sebastian Mendel www.sebastianmendel.de From steffen.kother at gmx.net Mon Feb 12 14:47:16 2007 From: steffen.kother at gmx.net (Steffen Kother) Date: Mon, 12 Feb 2007 14:47:16 +0100 Subject: [php] Frage zu Exe Message-ID: <000001c74eac$4f360430$6c19010a@dns.gso.de> Hallo Leute, hab mal wieder 'ne Frage. Zum Filtern von Zahlenwerten habe ich diese Exe: ([0-9]{1,3}\.?)*[0-9]{3}(,?[0-9]{1,2})?[a-zA-Z0-9\s]{1,3} Ursprünglich war sie für Mengenangaben vorgesehen, wie müsste ich sie umstellen, damit sie auch auf Währungsangaben passt? Nur den letzten Teil weglassen? Oder wie muss der letzte Teil aussehen, wenn nur EUR bzw. ? erlaubt ist? -- Mit freundlichen Gruessen / Kind regards Steffen Kother From liste at wernerlaude.de Mon Feb 12 14:50:45 2007 From: liste at wernerlaude.de (Werner Laude) Date: Mon, 12 Feb 2007 14:50:45 +0100 Subject: [php] Zugriffsschutz In-Reply-To: <45D06320.6090108@ez.no> References: <45D06004.6080109@wernerlaude.de> <45D06534.9070206@abarcar.com> <45D06320.6090108@ez.no> Message-ID: <45D070B5.9000805@wernerlaude.de> Tobias Struckmeier schrieb: > Beispiel: > http://meinhost.de/download.php?file=sonstwas.zip > > Mehr infos: http://www.php-faq.de/q/q-datei-download.html > > Cheers > Tobias > Vielen Dank für die Hinweise.. Werde ich mir mal ansehen.. Gruß Werner From mas at spuetz.ath.cx Mon Feb 12 14:23:21 2007 From: mas at spuetz.ath.cx (Martin Spuetz) Date: Mon, 12 Feb 2007 14:23:21 +0100 Subject: [php] Zugriffsschutz In-Reply-To: <45D06004.6080109@wernerlaude.de> References: <45D06004.6080109@wernerlaude.de> Message-ID: <45D06A49.3080401@spuetz.ath.cx> Werner Laude wrote: > Ich habe für einen Auftritt einen Zugriffschutz für eine bestimmte Seite > realisiert. > Dort kann der authorsierte Kunde dann eine zip Datei laden. > > zip > > Allerdings kann er dann den direkten link zur zip speichern und weiter > zugreifen.. > Wie kann ich das verhindern ? Idee ? Mir fällt da gerade nix ein.. Einfach: zip.php?zip=xyz Das Script prüft dann die Authentifzierung. Komplizierter: Lighttpd mit mod_secdownload: http://trac.lighttpd.net/trac/wiki/Docs:ModSecDownload Letzteres benutzen auch die ganzen Pornohoster. Gruss, Martin From steffen.kother at gmx.net Mon Feb 12 15:12:06 2007 From: steffen.kother at gmx.net (Steffen Kother) Date: Mon, 12 Feb 2007 15:12:06 +0100 Subject: [php] Nachtrag: Frage zu Exe In-Reply-To: <000001c74eac$4f360430$6c19010a@dns.gso.de> References: <000001c74eac$4f360430$6c19010a@dns.gso.de> Message-ID: <000101c74eaf$c713dec0$6c19010a@dns.gso.de> Mir geht es um die Auswertung solcher Angaben: Gutschrift für 630kg + 70Eur Bearbeitung Schaden 5.270,13 EUR Gutschrift: 3020,82 ? Gutschrift: 4.162,62 ? Gutschrift 5244,69 Besten Dank schonmal. -- Mit freundlichen Gruessen / Kind regards Steffen Kother From BatzMario at gmx.net Mon Feb 12 19:20:03 2007 From: BatzMario at gmx.net (Mario Batz) Date: Mon, 12 Feb 2007 19:20:03 +0100 Subject: [php] Webservice durch Proxyserver Message-ID: <20070212182007.2DC711EE54@leipzig.mushaake.org> Hallo, (hatte zwar die Frage schon mal gestellt, aber vielleicht zu ungenau ...) ich hab mit PEAR-SOAP einen Webservice programmiert. Dieses Teil läuft auf einem Server in der DMZ. Da ich die Webservice-Anfrage ins Inet stellen muss, hat mir der Admin gesagt, dass er einen Proxyserver mit Port angeben können muss. Also bei Windows kann man im IE den Proxy mit Port einstellen. Aber wie ist das unter Linux? Oder kann man dies direkt beim Apache oder PHP einstellen? Bei der PEAR-SOAP hab ich nichts gefunden. Es gibt zwar CURL-Optionen, aber vielleicht hab ich da was vergessen oder übersehen. (Es gibt keine WDSDL-Datei bei dem Webservice) Für jeden Hinweis dankbar. Mario Batz From mas at spuetz.ath.cx Mon Feb 12 19:43:06 2007 From: mas at spuetz.ath.cx (Martin Spuetz) Date: Mon, 12 Feb 2007 19:43:06 +0100 Subject: [php] Webservice durch Proxyserver In-Reply-To: <20070212182007.2DC711EE54@leipzig.mushaake.org> References: <20070212182007.2DC711EE54@leipzig.mushaake.org> Message-ID: <45D0B53A.6060102@spuetz.ath.cx> Mario Batz wrote: > ich hab mit PEAR-SOAP einen Webservice programmiert. Dieses Teil läuft auf > einem Server in der DMZ. Da ich die Webservice-Anfrage ins Inet stellen > muss, hat mir der Admin gesagt, dass er einen Proxyserver mit Port angeben > können muss. Kannst du z.B. im Firefox unter Linux auch machen. Eine Möglichkeit die mir jetzt spontan einfällt, wäre einfach ein transparenter Proxy. Mit einer iptables Regel würde das funktionieren, auf der Firewall für Squid z.B: iptables -t nat -A PREROUTING -i $ethx -p tcp --dport 80 -j REDIRECT --to-port 3128 Ich bin mir jetzt nicht sicher, ob das auch bei POSTROUTING funktioniert. Gruss, Martin From info at runge.it Tue Feb 13 11:55:09 2007 From: info at runge.it (Niels Runge) Date: Tue, 13 Feb 2007 11:55:09 +0100 Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> References: <45CF2E1F.6040308@cipher-code.de> <45D05C7C.8060808@sebastianmendel.de> <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> Message-ID: <45D1990D.1050808@runge.it> Hallo Thorsten, Thorsten Koch wrote: > Wie geht Ihr eigentlich damit um? > > 1. Wie findet Ihr die Bottle-Necks raus? > 2. Wie optimiert Ihr Euer System? > > > Meine Herangehensweise im aktuellen Projekt: > > 1. > Ich habe eine Klasse etabliert, die direkt in der Anwendung integriert ist und die Anwendung in Zeitzonen einteilt, deren Durchlaufzeiten gemessen werden. Dabei kann es sich um durchlaufene Abschnitte handeln (also zuerst Entgegennahme des Aufrufes, Laden der Bibliotheken, Laden der Standardklassen, Ausführung des Userrequestes, Darstellung des Inhaltes, Herunterfahren der Anwendung etc.), sowie die Verweildauer innerhalb diverser Funktionen (wie lange ist die Anwendung in der Datenbank etc.). > Somit können also die einzelnen Abschnitte und evtl. Auswirkung von Änderungen auf die Performance gemessen werden. Das ist aber alles mit der Hand am Arm und nicht sehr schick. > Optimierung: Angemessener wäre natürlich der Einsatz eines Debuggers, wie xdebug. Da sind wir grad dran. > je nach Anwendung sind es meistens (also bei mir meine ich jetzt ;-) ) aufwändige SQL-Abfragen die Zeit kosten. Also lasse ich bedarf alle SQL Abfragten mitloggen. Normalerweise die Abfrage selber sowie die benötigte Zeit oder wenn nötig auch das komplett Ergebnis. Ansonsten für ein Überblick schafft auch die "Profile" Funktion einer IDE. > 2. > Sind die langsamen Teile der Anwendung nun identifiziert, kann im Ablauf-Logfile (viele Codezeilen innerhalb Funktionen, die den Start und das Ende markieren) nachgeschaut werden, was da eigentlich abläuft und man kann durch Refactoring etc evtl. langsame Teile optimieren. Wie genau optimiert wird, hängt natürlich sehr von dem Programmteil ab. > Was sich als gute, einfache und effiziente Methode herauskristalisiert hat ist der Einsatz eines Caches. Hierzu verwende ich den eAccelerator. Das ist aber leider nur eine einmalige PerformanceKanone. > Grundsätzliche Verfahren um Performance zu haben bzw keine langsamen Programmteile zu generieren habe ich leider nicht. Etwas was ich kürzlich gelesen habe, sollte man sich allerdings im Hinterkopf behalten: > Wenn man viele einzelne Datenbankanfragen auf in eine packen kann, sollte man das tun. Wenn man mehrere User aus einer Tabelle auslesen möchte, dann sollte man diese nicht einzeln auslesen, sondern auf einmal mit where id=x OR id=y OR id=z und dann einfach drüber loopen. > Cache -> ByteCodeCache (oder wie auch immer die Teil jetzt heißen) sollte man aufjedenfall verwenden denke ich, ich hatte bisher noch keinen Nachteil das irgendwas nicht lief. Aber ich versuche auch soviel wie möglich selbst in der Anwendung zu cachen. Mysql-Query-Cache ist schön und gut, aber wesentlich mehr brachte mir bisher immer ein eigenes System. Entweder nach X Sekunden nicht mehr gültig oder bis die Daten aktualisiert werden usw. Gespeichert wird entweder als Text, temporäre Tabelle (HEAP-Typ) oder meistens direkt als PHP-Quelltext so dass dieser direkt eingebunden werden kann, ala "include CACHE_DIR.'products/'.$t_product_id.'.php';" Das bringt sehr viel bei mir! Und sonst, Hardware wird auch immer billiger hehe ;-) Nee, ich versuche schon soviel wie möglich Software-technisch zu lösen. Oft kann man auch einiges rausholen wenn man den Indianer gegen Lighty (www.lighttpd.net) austauscht oder eben unnötige Module austauscht. Das bringt jetzt meistens nicht so viel in der einzelnen Ausführzeit der Skripte, aber es kann mitbestimmen wieviel Requests per Sekunde möglich sind. Ok, das Performance-Thema könnte man sicherlich noch bis ins unendliche fortführen und jeder hat seine eigenen Erfahrungen da, aber ich hoffe es hilft Dir vielleicht etwas :-) Grüße Niels From Lutz.Zetzsche at sea-rescue.de Tue Feb 13 13:49:41 2007 From: Lutz.Zetzsche at sea-rescue.de (Lutz Zetzsche) Date: Tue, 13 Feb 2007 13:49:41 +0100 (CET) Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de > References: <45CF2E1F.6040308@cipher-code.de> <45D05C7C.8060808@sebastianmendel.de> <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> Message-ID: <36909.62.134.198.179.1171370981.squirrel@mail.open-medium.com> Hi Thorsten, Thorsten Koch schrieb: >> > (6ms vs 13ms bei 10000x[] vs 10000x array_push auf meinem Athlon 64 >> > 3700+, 2GB DDR2 Win2k php 5.2). > > Ein Unterschied von 7ms. Selbst bei 100k Datensätzen sinds 70ms, naja. Ich > denke wenn man Performance-Probleme hat, dann hat man die sicherlich > woanders und hat wirkungsvollere Stellschrauben. Du solltest Millisekunden nicht unterschätzen. :-D 7ms für 10.000 Durchläufe, 70ms für 100.000 - und 7000ms = 7 Sekunden, wenn das dann noch 100 Benutzer machen... ;-) Dabei ist das noch Theorie, weil wir hier linear rechnen. Ich habe nämlich vor ein paar Wochen bei der Optimierung meiner Website festgestellt, daß ein Flaschenhals nicht nur für sich mehr Zeit benötigt, sondern auch dazu führt, daß nachfolgende Programmteile merklich langsamer ausgeführt werden! So habe ich durch die Beseitigung des Flaschenhalses nicht nur die Laufzeit an dieser Stelle deutlich verbessert, sondern dadurch auch die des nachfolgenden Codes. :-) Man darf sich auch nicht täuschen, was die Besucherzahlen auf der Website angeht... :-) Aus den Besucherstatistiken werden ja die Suchmaschinen-Spider herausgerechnet. Sie grasen aber immer wieder Deinen Server ab. Wo ich meine Website jetzt seit ein paar Monaten im Prinzip voll dynamisch laufen habe und mich damit erstmals richtig mit Performanzfragen und -problemen auseinandersetzen mußte, ist mir z.B. bei der Live-Betrachtung der Last und des Serverlogs aufgefallen, daß meine Website permanent von teilweise mehreren Suchmaschinen gleichzeitig besucht wird. Nur auf die lebendigen Besucher zu gucken, reicht also nicht. Es gibt Zeiten, da habe ich alleine mindestens einen dynamischen Seitenzugriff pro Sekunde durch Suchmaschinen. Da kommen dann die Besucher oben drauf. Damit will ich sagen, daß man bei der Anlage seiner Website eben schon damit rechnen muß, daß da eine Menge Zugriffe und damit Last entsteht - und sei es nur durch Suchmaschinen. Daher macht es aus meiner Sicht auch Sinn, bis in den Hunderstel-Bereich oder noch weiter zu optimieren. > Wie geht Ihr eigentlich damit um? > > 1. Wie findet Ihr die Bottle-Necks raus? Ich nehme an bestimmten Punkten im Skript die Zeit und ermittele die Laufzeit zwischen verschiedenen Messpunkten. Dort, wo besonders viel Zeit liegen bleibt, gucke ich dann genauer. > 2. Wie optimiert Ihr Euer System? An erster Stelle steht bei mir immer die Datenbankoptimierung. Anständig gesetzte Indices wirken wahre Wunder. Das Beste was ich mal vor ein paar Monaten geschafft habe, war eine 200-fache Beschleunigung einer Abfrage mit JOIN durch das Setzen von Indices. Dann achte ich natürlich darauf, möglichst wenig Datenbankabfragen pro Seite abzusetzen. Wie Du schon geschrieben hast, versuche auch ich, die Daten aus einer Tabelle auf einmal zu ziehen und nicht für jeden Link, jedes Foto o.ä. einzeln. Darüber hinaus verwende ich den Smarty-Cache. Die gesamte Seite wird beim ersten Mal dynamisch und dann aus dem Cache angezeigt. Neuerdings setze ich auch zusätzlich Cache_Lite ein, um im PHP-Code Funktionen zu cachen. Dazu mußte ich Cache_Lite etwas modifizieren, weil der Funktionscache die Cache-ID zwar aus den Funktionsparametern zusammenbaut, allerdings nicht nur aus denen der zu cachenden Funktion, sondern auch mit den Parametern, die Cache_Lite intern hinzufügt... Damit wird seitenabhängig gecacht, während ich einen seitenunabhängigen Cache brauche. Ich habe also Cache_Lite so erweitert, daß ich die Cache-ID beim Funktionscache selbst setzen kann. Hinter dem Einsatz des Smarty-Caches und von Cache_Lite steht bei meiner Website ein gestaffeltes, ausgeklügeltes Caching-System. Mit Cache_Lite werden zentrale Funktionen meiner Website seitenübergreifend gecacht, d.h. die Cache-IDs setzen sich aus den Funktionsparametern meiner Funktionen zusammen. Dabei gibt es Verschachtelungen, d.h. eine Funktion wird das erste Mal aufgerufen und greift dabei auf das gecachte Ergebnis einer anderen Funktion zu. Wenn ich mich recht erinnere, habe ich einer Stelle in meinem Code drei Caching-Schichten übereinander, also drei aufeinander aufbauende Funktionen, die gecacht werden. Mit dem Smarty-Cache cache ich zum einen intern einzelne Teile einer Seite, die auf anderen Seiten genauso vorkommen. Dadurch muß ich einen solchen Seitenteil nur beim Aufruf der ersten Seite generieren, die diesen Teil enthält. Auf den anderen Seiten kann ich diesen Seitenteil intern direkt aus dem Cache einbinden und so Zeit sparen. Zum anderen cache ich mit Smarty auch die ganze Seite, d.h. für die Seite selbst wird ebenfalls eine eigene Cache-Datei angelegt. Wird die Seite erneut aufgerufen, wird nur diese eine Cache-Datei benötigt. Auch bei Smarty habe ich also ein mehrstufiges Caching-Konzept. Das Ganze ist etwas schwierig zu erklären, aber im Prinzip läuft es darauf hinaus, an allen Stellen, wo sich Daten nicht permanent verändern, nur einmal dynamisch zu arbeiten und danach nur noch auf den Cache zuzugreifen. Und dabei achte ich darauf, nicht redundant zu cachen. Auch nicht unwichtig. :-) Das gilt für Funktionen ebenso wie für Seiteninhalte. Ich hoffe, daß gibt Dir ein paar Denkanstöße. :-))) Viele Grüße Lutz From gamma32 at gmail.com Tue Feb 13 14:06:26 2007 From: gamma32 at gmail.com (Hendrik) Date: Tue, 13 Feb 2007 14:06:26 +0100 Subject: [php] Zweidimensionales Array unique machen. Message-ID: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com> Hallo Zusammen, Ich möchte gerne ein Zweidimensionales Array einzigartig(unique) machen. Das Array sieht ungefähr so aus: Array ( [11] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [12] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [13] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => [8] => 1 ) [14] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => 1 [8] => ) ) Ich möchte halt nur dies hier rausbekommen. Array ( [1] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [2] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => [8] => 1 ) [3] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => 1 [8] => ) ) Hat da jemand eine Idee -- Grüße Hendrik Still From jg at handcode.de Tue Feb 13 15:08:15 2007 From: jg at handcode.de (Jens Giessmann) Date: Tue, 13 Feb 2007 15:08:15 +0100 Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <36909.62.134.198.179.1171370981.squirrel@mail.open-medium.com> References: <45D05C7C.8060808@sebastianmendel.de> <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> <36909.62.134.198.179.1171370981.squirrel@mail.open-medium.com> Message-ID: <20070213140815.GD83542@shack.handcode.de> Hi, On Tue, Feb 13, 2007 at 01:49:41PM +0100, Lutz Zetzsche wrote: > > Thorsten Koch schrieb: > >> > (6ms vs 13ms bei 10000x[] vs 10000x array_push auf meinem Athlon 64 > >> > 3700+, 2GB DDR2 Win2k php 5.2). > > > > Ein Unterschied von 7ms. Selbst bei 100k Datensätzen sinds 70ms, naja. Ich > > denke wenn man Performance-Probleme hat, dann hat man die sicherlich > > woanders und hat wirkungsvollere Stellschrauben. > > Du solltest Millisekunden nicht unterschätzen. :-D Als weiteren Denkanstoss: Man sollte die Ausfuehrungszeit aber auch nicht ueberschaetzen ;-) Die Performance einer Website/eines Systems wird nicht (nur) durch die Ausfuehrungszeit der Scripte bestimmt, sondern haengt vom gesamten Ressourcenverbrauch ab. Beispiel: - Nehmen wir an die CPU ist 99% idle und wir haben 100MB RAM für PHP frei. - Es gibt 2 Scripte welche die selbe Aufgabe unterschiedlich erledigen: script1.php -> 0.04 sec CPU Zeit und 10 MB RAM script2.php -> 0.06 sec CPU Zeit und 5 MB RAM - Bei 10 gleichzeitigen Requests auf script1.php ist der verfügbare RAM verbraucht. Der 11. Request wird das System in die Knie zwingen und alle weiteren Anfragen erheblich verlangsamen. - Bei 10 Requests auf script2.php haben wir immer noch 50MB frei! Welches Script ist perfomanter? ;-) Gruss Jens From mas at spuetz.ath.cx Tue Feb 13 15:24:19 2007 From: mas at spuetz.ath.cx (Martin Spuetz) Date: Tue, 13 Feb 2007 15:24:19 +0100 Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> References: <45CF2E1F.6040308@cipher-code.de> <45D05C7C.8060808@sebastianmendel.de> <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> Message-ID: <45D1CA13.1080805@spuetz.ath.cx> Thorsten Koch wrote: > Ein Unterschied von 7ms. Selbst bei 100k Datensätzen sinds 70ms, naja. Ich denke wenn man Performance-Probleme hat, dann hat man die sicherlich woanders und hat wirkungsvollere Stellschrauben. > > Wie geht Ihr eigentlich damit um? > > 1. Wie findet Ihr die Bottle-Necks raus? > 2. Wie optimiert Ihr Euer System? Dazu passend hat Ilia Alshanetsky Slides von einem Vortrag über Caching online gestellt: http://ilia.ws/archives/161-Cache-for-Cah-slides-available.html Gruss, Martin From yannik at cipher-code.de Tue Feb 13 16:26:32 2007 From: yannik at cipher-code.de (Yannik Hampe) Date: Tue, 13 Feb 2007 16:26:32 +0100 Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> References: <45CF2E1F.6040308@cipher-code.de> <45D05C7C.8060808@sebastianmendel.de> <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> Message-ID: <45D1D8A8.8050703@cipher-code.de> Thorsten Koch wrote: > Hi Leute, > >>> (6ms vs 13ms bei 10000x[] vs 10000x array_push auf meinem Athlon >>> 64 3700+, 2GB DDR2 Win2k php 5.2). > > Ein Unterschied von 7ms. Selbst bei 100k Datensätzen sinds 70ms, > naja. Ich denke wenn man Performance-Probleme hat, dann hat man die > sicherlich woanders und hat wirkungsvollere Stellschrauben. Missachte sowas nicht so leichtfüssig. Sowas summiert sich schnell genug. Und warum die langsame Variante nehmen? > > > Wie geht Ihr eigentlich damit um? > > 1. Wie findet Ihr die Bottle-Necks raus? 2. Wie optimiert Ihr Euer > System? Wenn man es richtig professionell machen will, gibt es für php xdebug. Damit kann man Ausführungszeiten genauestens analysieren. Ich habe es nie selbst verwendet, da meine Projekte dem Aufwand nicht gerechtfertigten, aber das, was ich davon auf der letzten php Usergroup in Bochum gesehen habe fand ich recht eindrucksvoll. Momentan nehme ich daher php's microtime() funktion zu Hand. Dabei mache ich immer mal wieder, wenn ich mir überlege, wie ich ein Problem löse ein kleines Benchmark zu gewissen code schnipseln... Da kommen immer wieder interessante Sachen raus: meineFunktion(); meineKlasse::meineFunktion(); $meinObjekt->meineFunktion(); wird von oben nach unten immer langsamer. Und zwar auf 10k Durchläufen auch wieder sowas wie 10ms / 15ms / 20ms. Also nurmal grob, dass ich das gemacht habe ist schon was länger her... Oder sowas: $konsts =Array('meineKonstante' => 'bla'); $muell =$konsts['meineKonstante']; vs. define('meineKonstante','bla'); $muell =meineKonstante; vs. class meineKlasse { const meineKonstante ='bla'; } $muell =meineKlasse::meineKonstante; (das $muell = -statement jewals 10000x) Und Ergebnis? Will wer raten? ;-). Nun... Auch wieder in der Reihenfolge, wie ich es geschrieben habe von schnell nach langsam. Wer hätte gedacht, dass ein assoziativer Array Konstanten in die Tasche steckt? Nun gut. Wir könnten es hier mit anderen php-Optimierungen zu tun haben, wie Referenzen, die erst kopiert werden, wenn die Daten verändert werden oder sowas. Dafür weiss ich leider nicht genug über die php-Engine :-(. Aber es ist schonmal gut zu wissen, dass beiu der Frage Konstanten vs. assoziative Arrays Performane eher eine Argument für die Arrays sind. Ich hätte das Gegenteil erwartet... Es macht jedenfalls viel Spass und man entdeckt immer wieder neues und auch manchmal unerwartetes solche Tests zu machen. Yannik From Lutz.Zetzsche at sea-rescue.de Tue Feb 13 19:18:09 2007 From: Lutz.Zetzsche at sea-rescue.de (Lutz Zetzsche) Date: Tue, 13 Feb 2007 19:18:09 +0100 Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <20070213140815.GD83542@shack.handcode.de> References: <45D05C7C.8060808@sebastianmendel.de> <36909.62.134.198.179.1171370981.squirrel@mail.open-medium.com> <20070213140815.GD83542@shack.handcode.de> Message-ID: <200702131918.09351.Lutz.Zetzsche@sea-rescue.de> Hi Jens, Am Dienstag, 13. Februar 2007 15:08 schrieb Jens Giessmann: > On Tue, Feb 13, 2007 at 01:49:41PM +0100, Lutz Zetzsche wrote: > > Thorsten Koch schrieb: > > >> > (6ms vs 13ms bei 10000x[] vs 10000x array_push auf meinem > > >> > Athlon 64 3700+, 2GB DDR2 Win2k php 5.2). > > > > > > Ein Unterschied von 7ms. Selbst bei 100k Datensätzen sinds 70ms, > > > naja. Ich denke wenn man Performance-Probleme hat, dann hat man > > > die sicherlich woanders und hat wirkungsvollere Stellschrauben. > > > > Du solltest Millisekunden nicht unterschätzen. :-D > > Als weiteren Denkanstoss: > > Man sollte die Ausfuehrungszeit aber auch nicht ueberschaetzen ;-) > > Die Performance einer Website/eines Systems wird nicht (nur) durch > die Ausfuehrungszeit der Scripte bestimmt, sondern haengt vom > gesamten Ressourcenverbrauch ab. klar, gehört natürlich alles zusammen. :-) > Beispiel: > - Nehmen wir an die CPU ist 99% idle und wir haben 100MB RAM für PHP > frei. > - Es gibt 2 Scripte welche die selbe Aufgabe unterschiedlich > erledigen: script1.php -> 0.04 sec CPU Zeit und 10 MB RAM > script2.php -> 0.06 sec CPU Zeit und 5 MB RAM > - Bei 10 gleichzeitigen Requests auf script1.php ist der verfügbare > RAM verbraucht. Der 11. Request wird das System in die Knie zwingen > und alle weiteren Anfragen erheblich verlangsamen. > - Bei 10 Requests auf script2.php haben wir immer noch 50MB frei! > > > Welches Script ist perfomanter? ;-) Äh, das zweite? :-D Viele Grüße Lutz From jakob.buchgraber at googlemail.com Tue Feb 13 22:04:30 2007 From: jakob.buchgraber at googlemail.com (Jakob Buchgraber) Date: Tue, 13 Feb 2007 22:04:30 +0100 Subject: [php] Zweidimensionales Array unique machen. In-Reply-To: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com> References: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com> Message-ID: <45D227DE.4060001@gmail.com> Hi! Versuch's mal damit: array (0 => null, 1 => null, 2 => null), 12 => array (0 => null, 1 => null, 2 => null), 13 => array (0 => 1, 1 => 1, 2 => null), 14 => array (0 => null, 1 => null, 2 => 1) ); $hashes = array (); foreach ($array as $key => $subarray) { if (!is_array ($subarray)) continue; $val = ""; foreach ($subarray as $value) { $val .= $value; } $val = md5 ($val); if (in_array ($val, $hashes)) { unset ($array[$key]); } else { $hashes[] = $val; } } $array = array_values ($array); print_r ($array); ?> Je nachdem welche Daten gespeichert werden, kannst du das md5 auch weglassen (Rechenleistung) oder einen anderen Alogrithmus verwenden. Mein Gedanke dabei war nur, dass wenn du z.B. Texte oder ähnliches im Array speicherst, so ist es schneller und speicherschonender einen 32 Zeichen langen Hashcode zu vergleichen als z.B. einen 200 Zeichen langen Text. Beinhaltet das Array jedoch lediglich Zahlen, so kannst du das md5 natürlich weglassen. Ich bekomme folgende Ausgabe: Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => 1 [1] => 1 [2] => ) [2] => Array ( [0] => [1] => [2] => 1 ) ) MfG Jay From norbert at itbw.de Wed Feb 14 09:03:23 2007 From: norbert at itbw.de (Norbert Pfeiffer) Date: Wed, 14 Feb 2007 09:03:23 +0100 Subject: [php] Zweidimensionales Array unique machen. References: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com><45D227DE.4060001@gmail.com> <10637ab70702132314w208a22e5xf8bcbcfe872bfeb8@mail.gmail.com> Message-ID: <001901c7500e$9f8e5d20$3702a8c0@LionPC> Hallo, habt Ihr schon mal dies versucht: array (0 => null, 1 => null, 2 => null), 12 => array (0 => null, 1 => null, 2 => null), 13 => array (0 => 1, 1 => 1, 2 => null), 14 => array (0 => null, 1 => null, 2 => 1) ); print_r($array); sort($array); print_r($array); ?> Das erziehlt die gleiche Ausgabe und ist wesentlich einfacher. Natuerlich nur, wenn ich das Problem richtig erfasst habe. m. b. G. Norbert ------------------- Notruf 0177-1741686 ------------------- e.o.m. From norbert at itbw.de Wed Feb 14 10:58:02 2007 From: norbert at itbw.de (Norbert Pfeiffer) Date: Wed, 14 Feb 2007 10:58:02 +0100 Subject: [php] Zweidimensionales Array unique machen. References: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com><45D227DE.4060001@gmail.com><10637ab70702132314w208a22e5xf8bcbcfe872bfeb8@mail.gmail.com><001901c7500e$9f8e5d20$3702a8c0@LionPC> <10637ab70702140012u93cab9bh33f1900bdf03535d@mail.gmail.com> Message-ID: <001e01c7501e$a111ae80$3702a8c0@LionPC> > Nein es sollen alle Duplikate, > also mehrfache Einträge gelöscht werden. hmm, mehrfach bezogen auf was bitte ? - bezogen auf den Haupt-Array-Key - bezogen auf den Unter-Array-Key - bezogen auf alle Unter-Array-Key's - bezogen auf die Mondphase Wenn Du nicht beschreiben kannst, wie das Ergebnis aussehen soll, kann niemand eine Funktion finden oder coden. m. b. G. Norbert ------------------- Notruf 0177-1741686 ------------------- e.o.m. From lists at sebastianmendel.de Wed Feb 14 11:21:27 2007 From: lists at sebastianmendel.de (Sebastian Mendel) Date: Wed, 14 Feb 2007 11:21:27 +0100 Subject: [php] Zweidimensionales Array unique machen. In-Reply-To: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com> References: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com> Message-ID: <45D2E2A7.7050108@sebastianmendel.de> Hendrik schrieb: > Hallo Zusammen, > > Ich möchte gerne ein Zweidimensionales Array einzigartig(unique) machen. > Das Array sieht ungefähr so aus: > > Array > ( > [11] => Array > ( > [0] => > ... > ) > > [12] => Array > ( > [0] => > ... $unique_array = array(); foreach ($array as $element) { $unique_array[serialize($element)] = $element; } evenutell noch array_values() um die keys wieder zu 'löschen' $unique_array = array_values($unique_array); weiß aber nicht wie schnell/langsam das ist ... -- Sebastian Mendel www.sebastianmendel.de From lists at sebastianmendel.de Wed Feb 14 12:40:09 2007 From: lists at sebastianmendel.de (Sebastian Mendel) Date: Wed, 14 Feb 2007 12:40:09 +0100 Subject: [php] Performance-Probleme, war: Array-Funktionen vs. literale Angabe In-Reply-To: <45D1D8A8.8050703@cipher-code.de> References: <45CF2E1F.6040308@cipher-code.de> <45D05C7C.8060808@sebastianmendel.de> <1EF67DAEB72F844AAD5933E6C2AC44C0D8D996@andromeda.stuttgart.infoman.de> <45D1D8A8.8050703@cipher-code.de> Message-ID: <45D2F519.8080509@sebastianmendel.de> Yannik Hampe schrieb: > meineFunktion(); > meineKlasse::meineFunktion(); > $meinObjekt->meineFunktion(); > > wird von oben nach unten immer langsamer. Und zwar auf 10k Durchläufen > auch wieder sowas wie 10ms / 15ms / 20ms. Also nurmal grob, dass ich das > gemacht habe ist schon was länger her... hab das mal 'überprüft' ;-) zumindest bei meiner PHP Version 5.2.0 Windows mod tauschen Klasse::methode() und $objekt->methode() die Plätze ... 5.2.0 array(6) { ["100000 x test()"]=> float(0.110367059708) ["100000 x Test::test()"]=> float(0.212041854858) ["100000 x $test->test()"]=> float(0.150419950485) ["100000 x test() in multiTest()"]=> float(0.130726099014) ["100000 x Test::test() in Test::multiTestStatic()"]=> float(0.23764705658) ["100000 x $this->test() in $test->multiTest()"]=> float(0.169038057327) } test(); } return microtime(true) - $start; } } $loops = 100000; $times = array(); $test = new Test; $start = microtime(true); for ($i = 0; $i < $loops; $i++) { test(); } $times[$loops . ' x test()'] = microtime(true) - $start; $start = microtime(true); for ($i = 0; $i < $loops; $i++) { Test::testStatic(); } $times[$loops . ' x Test::test()'] = microtime(true) - $start; $start = microtime(true); for ($i = 0; $i < $loops; $i++) { $test->test(); } $times[$loops . ' x $test->test()'] = microtime(true) - $start; $times[$loops . ' x test() in multiTest()'] = multiTest(); $times[$loops . ' x Test::test() in Test::multiTestStatic()'] = Test::multiTestStatic(); $times[$loops . ' x $this->test() in $test->multiTest()'] = $test->multiTest(); echo phpversion() . '
';
var_dump($times);
?>


-- 
Sebastian Mendel

www.sebastianmendel.de

From jowe at epos4.at  Wed Feb 14 15:32:00 2007
From: jowe at epos4.at (Johannes Weber)
Date: Wed, 14 Feb 2007 15:32:00 +0100
Subject: [php] =?utf-8?q?_msession_aufkl=C3=A4rung?=
Message-ID: <2a8084c06fedd53b66c409d16beff06a@localhost>


Hallo Liste!

Mich würde Interessieren, ob jemand von euch erfahrungen mit Mohawk session - kurz msession hat.
Ich habe google bereits danach gefragt, bin aber auf keine schlüssige antwort gekommen.
Kann ich msession auf einen eigenen server packen? Wenn meine Seite z.b. auf mehrere Server aufgeteilt ist, greife ich dann - egal von welchen server aus - immer wieder auf die selbe session zurück?

Meine 2. Frage:
Wir sind derzeit dabei, eine community neu in php zu schreiben, bei der die einzelnen bereiche auf mehrere server aufgeteilt werden sollen (forum.domain.com, profil.domain.com).
Wie bewerkstellige ich am besten die Session-übergaben unter den Servern, sodass ich von server a auch auf die session-daten des server b zugreifen kann.
Lässt sich das "einfach" mit den normalen php-sessions machen?
Wäre die eleganteste lösung für dieses problem msession?


lg, jowe


From info at runge.it  Wed Feb 14 15:40:15 2007
From: info at runge.it (Niels Runge)
Date: Wed, 14 Feb 2007 15:40:15 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <2a8084c06fedd53b66c409d16beff06a@localhost>
References: <2a8084c06fedd53b66c409d16beff06a@localhost>
Message-ID: <45D31F4F.5050009@runge.it>

Hallo Johannes,

> Meine 2. Frage:
> Wir sind derzeit dabei, eine community neu in php zu schreiben, bei der die einzelnen bereiche auf mehrere server aufgeteilt werden sollen (forum.domain.com, profil.domain.com).
> Wie bewerkstellige ich am besten die Session-übergaben unter den Servern, sodass ich von server a auch auf die session-daten des server b zugreifen kann.
> Lässt sich das "einfach" mit den normalen php-sessions machen?
> Wäre die eleganteste lösung für dieses problem msession?
>   
Du kannst einen eigenen Session-Handler verwenden ( 
session_set_save_handler() ) und dann die Session-Daten in einer 
Datenbank ablegen. Und fertig :-)
Somit kannst Du ganz normal $_SESSION verwenden, nur die Daten liegen 
eben nicht im Temp-Verzeichnis (oder wo auch immer)

Grüße
Niels

From jakob.buchgraber at googlemail.com  Wed Feb 14 16:57:00 2007
From: jakob.buchgraber at googlemail.com (Jakob Buchgraber)
Date: Wed, 14 Feb 2007 16:57:00 +0100
Subject: [php] Zweidimensionales Array unique machen.
In-Reply-To: <10637ab70702140211n3c87c40ai4f6e96de2ffbecce@mail.gmail.com>
References: <10637ab70702130506o72ebe514r74814d48e8780a5@mail.gmail.com>	<45D227DE.4060001@gmail.com>	<10637ab70702132314w208a22e5xf8bcbcfe872bfeb8@mail.gmail.com>	<001901c7500e$9f8e5d20$3702a8c0@LionPC>	<10637ab70702140012u93cab9bh33f1900bdf03535d@mail.gmail.com>	<001e01c7501e$a111ae80$3702a8c0@LionPC>
	<10637ab70702140211n3c87c40ai4f6e96de2ffbecce@mail.gmail.com>
Message-ID: <45D3314C.1060201@gmail.com>

Die schnellste Lösung ist wohl die von Sebastian. Anstelle von serialize 
könnte man noch print_r ($array, true) nehmen, dass war bei meinen Tests 
etwas schneller.

MfG Jay

From info at runge.it  Wed Feb 14 17:34:13 2007
From: info at runge.it (Niels Runge)
Date: Wed, 14 Feb 2007 17:34:13 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <4e754a9078b6336f2c02e601ea6ee8d9@localhost>
References: <45D31F4F.5050009@runge.it>
	<4e754a9078b6336f2c02e601ea6ee8d9@localhost>
Message-ID: <45D33A05.2080908@runge.it>


>> Du kannst einen eigenen Session-Handler verwenden ( 
>> session_set_save_handler() ) und dann die Session-Daten in einer 
>> Datenbank ablegen. Und fertig :-)
>> Somit kannst Du ganz normal $_SESSION verwenden, nur die Daten liegen 
>> eben nicht im Temp-Verzeichnis (oder wo auch immer)
>>     
>
> - schon klar, aber wie soll ich das verwenden, bei 3,4,... verschiedenen server?
>
> mich würde interessieren, wie es z.b. myspace gemacht hat.
>
>   
na genau wie mit einem?
Angenommen Dein Datenbankserver hat die IP XXX.XXX.XXX.X10 und Dein 
Forum ( forum.domain.com ) liegt hier XXX.XXX.XXX.X16 dann baust Du von 
allen Servern aus eine Verbindung zum DB-Server auf (dem 10er) und 
fertig :-)
Ich befürchte dass ich vielleicht doch mißverstanden habe was Du machen 
möchtest, aber sonst habe ich das bisher so umgesetzt.
Aber natürlich nur wenn die Server quasi nebeneinander standen, im 
gleich Netz eben.

Grüße
Niels

PS:
ich bezweifel dass Dir hier jemand aus der ML genaustens erklären kann 
wie Myspace es macht

From mas at spuetz.ath.cx  Wed Feb 14 21:55:15 2007
From: mas at spuetz.ath.cx (Martin Spuetz)
Date: Wed, 14 Feb 2007 21:55:15 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <2a8084c06fedd53b66c409d16beff06a@localhost>
References: <2a8084c06fedd53b66c409d16beff06a@localhost>
Message-ID: <45D37733.6040008@spuetz.ath.cx>

Johannes Weber wrote:
> Meine 2. Frage:
> Wir sind derzeit dabei, eine community neu in php zu schreiben, bei der die einzelnen bereiche auf mehrere server aufgeteilt werden sollen (forum.domain.com, profil.domain.com).
> Wie bewerkstellige ich am besten die Session-übergaben unter den Servern, sodass ich von server a auch auf die session-daten des server b zugreifen kann.
> Lässt sich das "einfach" mit den normalen php-sessions machen?
> Wäre die eleganteste lösung für dieses problem msession?

Wenn ihr nach Bereichen aufteilt, was macht ihr denn wenn z.B.
forum.tld der Last nicht mehr gewachsen ist? Oder wenn forum.tld ausfällt?

Ich halte die Aufteilung nach Diensten für sinnvoller, z.B. Datenbank
und Web (einfaches Beispiel).

Auf der Datenbankseite bietet sich MySQLs Master/Slave Replication an.
Bei den Webservern ist es auch relativ einfach, bei einem verteilten
Session-Handling. Manche Load-Balancer machen das über Cookies und
leiten den entsprechenden Requests immer wieder an den gleichen
Webserver, ist für die Anwendung dann transparent.
Da ihr dir Andwendung sowieso neu schreiben wollt, bietet sich
memcached [1] geradezu an.

Habt ihr viele statische Dateien, kann ein kleiner, flinker Webserver
(z.B. lighttpd) die Dateien viel schneller ausliefern als der Apache.

Vielleicht bietet es sich auch an, den Webservern einen Reverse Proxy
vorzustellen.

Gruss,
Martin

[1] http://www.danga.com/memcached/

From lists at ahlenstorf.ch  Wed Feb 14 22:56:43 2007
From: lists at ahlenstorf.ch (Andreas Ahlenstorf)
Date: Wed, 14 Feb 2007 22:56:43 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <45D31F4F.5050009@runge.it>
References: <2a8084c06fedd53b66c409d16beff06a@localhost>
	<45D31F4F.5050009@runge.it>
Message-ID: 


Am 14.02.2007 um 15:40 schrieb Niels Runge:

> Du kannst einen eigenen Session-Handler verwenden (
> session_set_save_handler() ) und dann die Session-Daten in einer
> Datenbank ablegen. Und fertig :-)

Datenbank ist ganz schrecklich. Die hat genug Druck und was man auf  
keinen Fall haben will, sind mehr Schreibvorgänge, weil die kann man  
nur schwer verteilen. Memcached nehmen und fertig.

Gruss,
Andreas


From norbert at itbw.de  Thu Feb 15 02:20:06 2007
From: norbert at itbw.de (Norbert Pfeiffer)
Date: Thu, 15 Feb 2007 02:20:06 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
References: <45D37733.6040008@spuetz.ath.cx>
	
Message-ID: <002901c7509f$707f1fb0$3702a8c0@LionPC>

> Da die last aber in letzter zeit mehr wird, und auch die
> user-online anzahl steigt (~700), wird in weiterer zukunft
> auch eine lastverteilung der apache server nötig sein.
hmm,
was habt ihr denn da an Hardware zu laufen ...

Ein durchschnittlicher Managed Server leistet, wenn er ungebremst
arbeiten kann, bis zu 1500 Request/Sekunde. D.h., wenn man Bilder
und statische Seiten auf einen lighttpd auslagert, sind 700 User
nichts, worueber man nachdenken muss ...


m. b. G.  Norbert
-------------------
Notruf 0177-1741686
-------------------
e.o.m. 


From lists at sebastianmendel.de  Thu Feb 15 10:03:53 2007
From: lists at sebastianmendel.de (Sebastian Mendel)
Date: Thu, 15 Feb 2007 10:03:53 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: 
References: <2a8084c06fedd53b66c409d16beff06a@localhost>	<45D31F4F.5050009@runge.it>
	
Message-ID: <45D421F9.3010409@sebastianmendel.de>

Andreas Ahlenstorf schrieb:
> Am 14.02.2007 um 15:40 schrieb Niels Runge:
> 
>> Du kannst einen eigenen Session-Handler verwenden (
>> session_set_save_handler() ) und dann die Session-Daten in einer
>> Datenbank ablegen. Und fertig :-)
> 
> Datenbank ist ganz schrecklich. Die hat genug Druck und was man auf  
> keinen Fall haben will, sind mehr Schreibvorgänge, weil die kann man  

für sowas würde man auch eine Tabelle im Speicher nehmen (HEAP, MEMORY, ...)


> nur schwer verteilen. Memcached nehmen und fertig.

'Memcached' über mehrere Server?


-- 
Sebastian Mendel

www.sebastianmendel.de

From mas at spuetz.ath.cx  Thu Feb 15 10:24:26 2007
From: mas at spuetz.ath.cx (Martin Spuetz)
Date: Thu, 15 Feb 2007 10:24:26 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <45D421F9.3010409@sebastianmendel.de>
References: <2a8084c06fedd53b66c409d16beff06a@localhost>	<45D31F4F.5050009@runge.it>	
	<45D421F9.3010409@sebastianmendel.de>
Message-ID: <45D426CA.3090807@spuetz.ath.cx>

Sebastian Mendel wrote:
> Andreas Ahlenstorf schrieb:
>> Am 14.02.2007 um 15:40 schrieb Niels Runge:
>>
>>> Du kannst einen eigenen Session-Handler verwenden (
>>> session_set_save_handler() ) und dann die Session-Daten in einer
>>> Datenbank ablegen. Und fertig :-)
>> Datenbank ist ganz schrecklich. Die hat genug Druck und was man auf  
>> keinen Fall haben will, sind mehr Schreibvorgänge, weil die kann man  
> 
> für sowas würde man auch eine Tabelle im Speicher nehmen (HEAP, MEMORY, ...)

Trotzdem schlecht bei MySQL Master/Slave Replication, bei
entsprechendem Traffic.

>> nur schwer verteilen. Memcached nehmen und fertig.
> 
> 'Memcached' über mehrere Server?

Jepp! Genau dafür ist es gedacht.

"memcached is a high-performance, distributed memory object caching
system, generic in nature, but intended for use in speeding up dynamic
web applications by alleviating database load."
http://www.danga.com/memcached/

Gruss,
Martin

From lists at ahlenstorf.ch  Thu Feb 15 10:28:45 2007
From: lists at ahlenstorf.ch (Andreas Ahlenstorf)
Date: Thu, 15 Feb 2007 10:28:45 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <45D421F9.3010409@sebastianmendel.de>
References: <2a8084c06fedd53b66c409d16beff06a@localhost>	<45D31F4F.5050009@runge.it>
	
	<45D421F9.3010409@sebastianmendel.de>
Message-ID: <395853B9-DBE6-47EE-8C3E-5FD0F31023CD@ahlenstorf.ch>


Am 15.02.2007 um 10:03 schrieb Sebastian Mendel:

>> Datenbank ist ganz schrecklich. Die hat genug Druck und was man auf
>> keinen Fall haben will, sind mehr Schreibvorgänge, weil die kann man
> für sowas würde man auch eine Tabelle im Speicher nehmen (HEAP,  
> MEMORY, ...)

Besser gleich einen NDB-Cluster, was aber nichts daran ändert, dass  
es ineffizienter als memcached ist. Hat allerdings den Vorteil, dass  
du nie Sessions verlierst, wenn eine Kiste abraucht.

>> nur schwer verteilen. Memcached nehmen und fertig.
>
> 'Memcached' über mehrere Server?

Selbstverständlich. http://www.linuxjournal.com/article/7451

Gruss,
Andreas


From norbert at itbw.de  Thu Feb 15 10:31:23 2007
From: norbert at itbw.de (Norbert Pfeiffer)
Date: Thu, 15 Feb 2007 10:31:23 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
References: <2a8084c06fedd53b66c409d16beff06a@localhost>	<45D31F4F.5050009@runge.it>
	<45D421F9.3010409@sebastianmendel.de>
Message-ID: <000b01c750e4$11380cc0$3702a8c0@LionPC>

> > Andreas Ahlenstorf schrieb:
> Sebastian Mendel antwortete:
> > Datenbank ist ganz schrecklich. Die hat genug Druck und was man
> > auf keinen Fall haben will, sind mehr Schreibvorgänge, weil die
> > kann man
> für sowas würde man auch eine Tabelle im Speicher nehmen
> (HEAP, MEMORY, ...)
hmm,
- bei einem Datenbankserver der nicht swapt gibt es keine Vorteile
  von HEAP-Tables, weil alle aktuellen Tabellen im RAM liegen.
- mit einem Datenbankserver der laufend swapt ist jede Ueberlegung
  bezueglich erhoehter Last verlorene Liebesmuehe.

Z.B.:
Die DB-Server der Shared-Hosts-Pakete eines namhaften Massenhosters
sind so aufgebaut, dass sie nicht swappen. Deshalb konnten keine 
Performaceunterschiede zwischen normalen Tabellen und Heap-Tables
gemessen werden. q.e.d.


m. b. G.  Norbert
-------------------
Notruf 0177-1741686
-------------------
e.o.m. 


From lists at ahlenstorf.ch  Thu Feb 15 10:49:53 2007
From: lists at ahlenstorf.ch (Andreas Ahlenstorf)
Date: Thu, 15 Feb 2007 10:49:53 +0100
Subject: [php] =?iso-8859-1?q?msession_aufkl=E4rung?=
In-Reply-To: <000b01c750e4$11380cc0$3702a8c0@LionPC>
References: <2a8084c06fedd53b66c409d16beff06a@localhost>	<45D31F4F.5050009@runge.it>
	<45D421F9.3010409@sebastianmendel.de>
	<000b01c750e4$11380cc0$3702a8c0@LionPC>
Message-ID: 


Am 15.02.2007 um 10:31 schrieb Norbert Pfeiffer:

> - bei einem Datenbankserver der nicht swapt gibt es keine Vorteile
>   von HEAP-Tables, weil alle aktuellen Tabellen im RAM liegen.

Das ist nicht korrekt. Bei MyISAM, InnoDB usw. liegen die Daten auf  
Disk. Im RAM gibt's nur den Key Cache, den Query Cache plus den  
Filesystem Cache vom Betriebssystem, nicht aber die gesamten  
Nutzdaten. Wie wolltest du das z.B. bei 500 GB grossen Datenbanken  
überhaupt machen?

> - mit einem Datenbankserver der laufend swapt ist jede Ueberlegung
>   bezueglich erhoehter Last verlorene Liebesmuehe.

Bei Datenbank-Servern ist nicht Swap Space das Problem, sondern in  
der Regel fehlende Disk I/0.

Gruss,
Andreas

From norbert at itbw.de  Thu Feb 15 11:54:08 2007
From: norbert at itbw.de (Norbert Pfeiffer)
Date: Thu, 15 Feb 2007 11:54:08 +0100
Subject: [php] htaccess-Eintrag gesucht
Message-ID: <002201c750ef$a4edeb50$3702a8c0@LionPC>

Hallo,

in einem bestimmten Ordner sollen auch html-Dateien geparst
werden. Leider finde ich den richtigen htaccess-Eintrag nicht.

Wie ich das in der httpd.conf machen kann weiss ich, aber es
soll ja nur ein spezielles Verzeichnis betroffen sein.

Na-ja, vielleicht weiss ja jemand die Loesung ...


m. b. G.  Norbert
-------------------
Notruf 0177-1741686
-------------------
e.o.m.

From info at runge.it  Thu Feb 15 11:58:50 2007
From: info at runge.it (Niels Runge)
Date: Thu, 15 Feb 2007 11:58:50 +0100
Subject: [php] htaccess-Eintrag gesucht
In-Reply-To: <002201c750ef$a4edeb50$3702a8c0@LionPC>
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
Message-ID: <45D43CEA.7@runge.it>

Hallo Norbert,

Norbert Pfeiffer wrote:
> in einem bestimmten Ordner sollen auch html-Dateien geparst
> werden. Leider finde ich den richtigen htaccess-Eintrag nicht.
>
> Wie ich das in der httpd.conf machen kann weiss ich, aber es
> soll ja nur ein spezielles Verzeichnis betroffen sein.
>
> Na-ja, vielleicht weiss ja jemand die Loesung ...
probiere es mal hiermit:

AddType application/x-httpd-php .html

Grüße
Niels

From dubaut at gmail.com  Thu Feb 15 11:59:31 2007
From: dubaut at gmail.com (Hannes H.)
Date: Thu, 15 Feb 2007 11:59:31 +0100
Subject: [php] htaccess-Eintrag gesucht
In-Reply-To: <002201c750ef$a4edeb50$3702a8c0@LionPC>
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
Message-ID: 

Hallo Norbert!

Am 15.02.07 schrieb Norbert Pfeiffer :
>
> in einem bestimmten Ordner sollen auch html-Dateien geparst
> werden. Leider finde ich den richtigen htaccess-Eintrag nicht.
>
> Wie ich das in der httpd.conf machen kann weiss ich, aber es
> soll ja nur ein spezielles Verzeichnis betroffen sein.


   AddType application/x-httpd-php .html


Hannes Halenka

From Lutz.Zetzsche at sea-rescue.de  Thu Feb 15 12:02:26 2007
From: Lutz.Zetzsche at sea-rescue.de (Lutz Zetzsche)
Date: Thu, 15 Feb 2007 12:02:26 +0100
Subject: [php] htaccess-Eintrag gesucht
In-Reply-To: <002201c750ef$a4edeb50$3702a8c0@LionPC>
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
Message-ID: <200702151202.26900.Lutz.Zetzsche@sea-rescue.de>

Hallo Norbert,

Am Donnerstag, 15. Februar 2007 11:54 schrieb Norbert Pfeiffer:
> in einem bestimmten Ordner sollen auch html-Dateien geparst
> werden. Leider finde ich den richtigen htaccess-Eintrag nicht.
>
> Wie ich das in der httpd.conf machen kann weiss ich, aber es
> soll ja nur ein spezielles Verzeichnis betroffen sein.
>
> Na-ja, vielleicht weiss ja jemand die Loesung ...

die entscheidende Voraussetzung ist, daß AddType sich nicht nur in der 
Konfiguration, sondern auch in der .htaccess setzen läßt. Das ist 
gegeben. Damit ist der Rest ganz einfach, sofern ich nichts übersehen 
habe:

Füge einfach den AddType-Befehl, den Du normalerweise in die httpd.conf 
schreibst, in die .htaccess-Datei ein. :-)

Viele Grüße
Lutz

From norbert at itbw.de  Thu Feb 15 13:05:25 2007
From: norbert at itbw.de (Norbert Pfeiffer)
Date: Thu, 15 Feb 2007 13:05:25 +0100
Subject: [php] htaccess-Eintrag gesucht
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
	
Message-ID: <001c01c750f9$9575e9c0$3702a8c0@LionPC>

Hallo,

@Niels
>  AddType application/x-httpd-php .html
dieser Eintrag brachte kein Ergebnis.
Der PHP-Code wurde als Text ausgegeben.

@Hannes
> 
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Satisfy all


    AllowOverride All
    Order allow,deny
    Deny from all


also ich lese da heraus, dass es gehen sollte,
aber siehe oben ... :-(


m. b. G.  Norbert
-------------------
Notruf 0177-1741686
-------------------
e.o.m.

From list at nm-f.de  Thu Feb 15 13:12:50 2007
From: list at nm-f.de (=?ISO-8859-15?Q?Sebastian_M=FCller?=)
Date: Thu, 15 Feb 2007 13:12:50 +0100
Subject: [php] htaccess-Eintrag gesucht
In-Reply-To: <001c01c750f9$9575e9c0$3702a8c0@LionPC>
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>	
	<001c01c750f9$9575e9c0$3702a8c0@LionPC>
Message-ID: <45D44E42.9050800@nm-f.de>

Norbert Pfeiffer schrieb:
>>  AddType application/x-httpd-php .html
> dieser Eintrag brachte kein Ergebnis.
> Der PHP-Code wurde als Text ausgegeben.
> 

Moin,

also bei mir funktioniert folgender Eintrag wunderbar:

AddType application/x-httpd-php php html

Also OHNE Punkt. Probiere das mal aus.

Schöne Grüße aus Hamburg,
Sebastian

-- 
new mediafactory Hamburg
Sebastian Müller
www.new-mediafactory.de

From norbert at itbw.de  Thu Feb 15 13:13:29 2007
From: norbert at itbw.de (Norbert Pfeiffer)
Date: Thu, 15 Feb 2007 13:13:29 +0100
Subject: [php] htaccess-Eintrag gesucht
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
	<200702151202.26900.Lutz.Zetzsche@sea-rescue.de>
Message-ID: <002c01c750fa$b6c6b3b0$3702a8c0@LionPC>

Hai,

hier der funktionierende Eintrag:

AddType application/x-httpd-php .html
AddHandler php-script .html

hoffe das merkt sich jetzt mal jemand ... ;-)


m. b. G.  Norbert
-------------------
Notruf 0177-1741686
-------------------
e.o.m.

From info at runge.it  Thu Feb 15 13:15:42 2007
From: info at runge.it (Niels Runge)
Date: Thu, 15 Feb 2007 13:15:42 +0100
Subject: [php] htaccess-Eintrag gesucht
In-Reply-To: <001c01c750f9$9575e9c0$3702a8c0@LionPC>
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>	
	<001c01c750f9$9575e9c0$3702a8c0@LionPC>
Message-ID: <45D44EEE.90907@runge.it>

Hallo Norbert,

> @Niels
>   
>>  AddType application/x-httpd-php .html
>>     
> dieser Eintrag brachte kein Ergebnis.
> Der PHP-Code wurde als Text ausgegeben.
>   
ist das nen "eigener" Server oder ein Server von 1&1 usw. ?
Läuft PHP als CGI-Version? Bin jetzt mal vom Modul ausgegangen.

> @Lutz
> alle Zeilen, die sich mit Ordnern befassen folgen hier:
>
> 
>     Options Indexes FollowSymLinks
>     AllowOverride All
>     Order allow,deny
>     Allow from all
>     Satisfy all
> 
> 
>     AllowOverride All
>     Order allow,deny
>     Deny from all
> 
>   
also "AllowOverride All" erlaubt ja die Änderung per .htaccess

Also entweder Du hast da jetzt ne Kiste bei bzw. von 1&1 und Konsorten 
oder Du hast PHP als CGI laufen, was anderes wüßte ich jetzt nicht.

Grüße
Niels

From list at tridemail.de  Thu Feb 15 13:15:57 2007
From: list at tridemail.de (Michael Borchers)
Date: Thu, 15 Feb 2007 13:15:57 +0100
Subject: [php] MySQL .csv Import nach File-Upload
Message-ID: <000501c750fb$0ccfd930$af24a8c0@mbpc>

Über ein Formular wird eine CSV Datei hochgeladen.
Diese wird nur temporär gespeichert und soll daraufhin in MySQL importiert 
werden.

   if(is_uploaded_file($_FILES['tracking_file']['tmp_name']))
   {
    $track_q = "LOAD DATA INFILE '" . $_FILES['tracking_file']['tmp_name'] . 
"'
        INTO TABLE `tracking`
        FIELDS TERMINATED BY ';'
        ENCLOSED BY '\"'
        ESCAPED BY '\\'
        LINES TERMINATED BY '\r\n'";

    mysql_query($track_q);
}


Die Datei wurde erfolgreich hochgeladen und existiert zum Zeitpunkt des 
Skriptes eindeutig
unter $_FILES['tracking_file']['tmp_name'].

Aber die Query bringt keinen Erfolg. Eine Testquery zuvor zeigt, dass die 
Verbindung steht.
auch LOAD DATA LOCAL INFILE geht nicht.
Über phpMyAdmin geht die Query mit der gleichen Datei!

Any ideas?! 


From list at tridemail.de  Thu Feb 15 13:18:49 2007
From: list at tridemail.de (Michael Borchers)
Date: Thu, 15 Feb 2007 13:18:49 +0100
Subject: [php] SOLVED Re:  MySQL .csv Import nach File-Upload
References: <000501c750fb$0ccfd930$af24a8c0@mbpc>
Message-ID: <000a01c750fb$72a492f0$af24a8c0@mbpc>

> Über ein Formular wird eine CSV Datei hochgeladen.
> Diese wird nur temporär gespeichert und soll daraufhin in MySQL importiert
> werden.
>
>   if(is_uploaded_file($_FILES['tracking_file']['tmp_name']))
>   {
>    $track_q = "LOAD DATA INFILE '" . $_FILES['tracking_file']['tmp_name'] 
> .
> "'
>        INTO TABLE `tracking`
>        FIELDS TERMINATED BY ';'
>        ENCLOSED BY '\"'
>        ESCAPED BY '\\'
>        LINES TERMINATED BY '\r\n'";
>
>    mysql_query($track_q);
> }
>
>
> Die Datei wurde erfolgreich hochgeladen und existiert zum Zeitpunkt des
> Skriptes eindeutig
> unter $_FILES['tracking_file']['tmp_name'].
>
> Aber die Query bringt keinen Erfolg. Eine Testquery zuvor zeigt, dass die
> Verbindung steht.
> auch LOAD DATA LOCAL INFILE geht nicht.
> Über phpMyAdmin geht die Query mit der gleichen Datei!
>
> Any ideas?!
>

Hier die Query, die mir phpMyAdmin nach erfolgreichem Import anzeigt und 
empfiehlt:
LOAD DATA LOCAL INFILE '/tmp/php2mtcz4' INTO TABLE `tracking` FIELDS 
TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

Allerdings müsste sie in diesem Fall lauten:
LOAD DATA LOCAL INFILE '/tmp/php2mtcz4' INTO TABLE `tracking` FIELDS 
TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '' LINES TERMINATED BY '\r\n'

Dann geht es. Wie kommt diese falsche Maskierung zustanden?!  ESCAPED BY 
'\\' :: ESCAPED BY '' 


From albin at albinblaschka.info  Thu Feb 15 13:20:02 2007
From: albin at albinblaschka.info (Albin Blaschka)
Date: Thu, 15 Feb 2007 13:20:02 +0100
Subject: [php] htaccess-Eintrag gesucht
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
	<001c01c750f9$9575e9c0$3702a8c0@LionPC>
Message-ID: 

Norbert Pfeiffer writes:

> Hallo,
> 
> @Niels
>>  AddType application/x-httpd-php .html
> dieser Eintrag brachte kein Ergebnis.
> Der PHP-Code wurde als Text ausgegeben.
> 
> @Hannes
>>  bringt: /.htaccess:  

Hallo,

da sich soweit ich weis eine .htaccess sich im Prinzip auf ein Directory 
bezieht würde ich das 
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>		<001c01c750f9$9575e9c0$3702a8c0@LionPC>
	<45D44E42.9050800@nm-f.de>
Message-ID: <45D45021.9050509@runge.it>

Hallo Sebastian,

> Norbert Pfeiffer schrieb:
>   
>>>  AddType application/x-httpd-php .html
>>>       
>> dieser Eintrag brachte kein Ergebnis.
>> Der PHP-Code wurde als Text ausgegeben.
>>     
> also bei mir funktioniert folgender Eintrag wunderbar:
>
> AddType application/x-httpd-php php html
>
> Also OHNE Punkt. Probiere das mal aus.
>   
funktioniert mit und ohne Punkt ;-)

http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addtype

"The extension argument is case-insensitive, and can be specified with 
or without a leading dot."

Grüße
Niels

From dubaut at gmail.com  Thu Feb 15 13:45:29 2007
From: dubaut at gmail.com (Hannes H.)
Date: Thu, 15 Feb 2007 13:45:29 +0100
Subject: [php] htaccess-Eintrag gesucht
In-Reply-To: <002c01c750fa$b6c6b3b0$3702a8c0@LionPC>
References: <002201c750ef$a4edeb50$3702a8c0@LionPC>
	<200702151202.26900.Lutz.Zetzsche@sea-rescue.de>
	<002c01c750fa$b6c6b3b0$3702a8c0@LionPC>
Message-ID: 

Hallo Norbert!

Am 15.02.07 schrieb Norbert Pfeiffer :
>
> AddType application/x-httpd-php .html
> AddHandler php-script .html

Wozu brauchst du dieses AddHandler an dieser Stelle?

Hannes

From norbert at itbw.de  Thu Feb 15 14:03:48 2007
From: norbert at itbw.de (Norbert Pfeiffer)
Date: Thu, 15 Feb 2007 14:03:48 +0100
Subject: [php] htaccess-Eintrag gesucht
References: <002201c750ef$a4edeb50$3702a8c0@LionPC><200702151202.26900.Lutz.Zetzsche@sea-rescue.de><002c01c750fa$b6c6b3b0$3702a8c0@LionPC>
	
Message-ID: <005901c75101$c159e660$3702a8c0@LionPC>

Hi,

> > AddType application/x-httpd-php .html
> > AddHandler php-script .html
> Wozu brauchst du dieses AddHandler an dieser Stelle?
hmm,
wieso fragst Du da mich ... ?
Also,
es handelt sich bei dem Server um Apache/2.2.2 und PHP/5.1.4
wobei PHP als CGI-Modul laeuft. AddType allein bringt da nichts.
Und in [1] laesst sich nachlesen, dass man AddHandler bei neueren
Apache und PHP-Versionen verwenden sollte.
Putzigerweise bringt jedoch:
    AddHandler application/x-httpd-php .html
einen Fehler und:
    AddHandler php-script .html
reicht auch alleine.

Das ist alles nur empirisch ermittelt,
also bitte nicht nach dem "warum" fragen, danke.

[1] - http://www.tiptom.ch/tests/phpssi/server1.html


m. b. G.  Norbert
-------------------
Notruf 0177-1741686
-------------------
e.o.m.

From thomas.hausheer at bluewin.ch  Fri Feb 16 13:28:32 2007
From: thomas.hausheer at bluewin.ch (Thomas Hausheer)
Date: Fri, 16 Feb 2007 13:28:32 +0100
Subject: [php] doppelte ID
In-Reply-To: 
References: <14422211.318761169653432675.JavaMail.webmail@ps24zhh.bluewin.ch>	<998F9915-07E6-4CCA-84B8-5F145CA188BD@bluewin.ch>	<45C1C789.9060104@mysql.com>
	<45C7A470.9030209@mysql.com>
	
Message-ID: <6B8DE7FE-77AB-4C28-8732-AFF56A443D32@bluewin.ch>

Hallo

gibt es irgendeine Möglichkeit doppelte Einträge (ID) in einer MySQL  
Tabelle zu verhindern?

Ausgangslage:
MySQL Tabelle ID-> INT(11), auto_increment, unique

Neue Datensätze überprüfe ich vor dem erstellen auf bereits  
bestehende Benutzername. Erst wenn dies leer ist, geschieht der Insert.
Leider hab ich aber immer wieder doppelte ID-Einträge. Weiss nicht,  
ob das kommt wenn jemand mehrmals auf 'Reload' drückt. Wie verhindere  
ich dies?

Merci für Infos?
Gruss
Thomsa

From adler.martin at web.de  Fri Feb 16 14:09:52 2007
From: adler.martin at web.de (Martin Adler)
Date: Fri, 16 Feb 2007 14:09:52 +0100
Subject: [php] doppelte ID
In-Reply-To: <6B8DE7FE-77AB-4C28-8732-AFF56A443D32@bluewin.ch>
References: <14422211.318761169653432675.JavaMail.webmail@ps24zhh.bluewin.ch>	<998F9915-07E6-4CCA-84B8-5F145CA188BD@bluewin.ch>	<45C1C789.9060104@mysql.com>	<45C7A470.9030209@mysql.com>	
	<6B8DE7FE-77AB-4C28-8732-AFF56A443D32@bluewin.ch>
Message-ID: <45D5AD20.7050800@web.de>

Hallo Thomas,

Thomas Hausheer wrote:
> Hallo
> 
> gibt es irgendeine Möglichkeit doppelte Einträge (ID) in einer MySQL  
> Tabelle zu verhindern?
> 
> Ausgangslage:
> MySQL Tabelle ID-> INT(11), auto_increment, unique

wenn die Spalte `ID` einen Unique Index besitzt kann es keine doppelten 
Id's geben, außer NULL sofern NULL Werte erlaubt sind.
Besser wäre natürlich ein Primary Key Index, welcher ohnehin keinen NULL 
Wert akzeptiert.

> Neue Datensätze überprüfe ich vor dem erstellen auf bereits  
> bestehende Benutzername. Erst wenn dies leer ist, geschieht der Insert.
> Leider hab ich aber immer wieder doppelte ID-Einträge. Weiss nicht,  
> ob das kommt wenn jemand mehrmals auf 'Reload' drückt. Wie verhindere  
> ich dies?

Auf die Spalte mit den Benutzernamen sollte natürlch ebenfalls ein Index 
vom Typ Unique gesetzt sein.

Aber bevor noch weiter Disskutiert werden kann wäre es besser kurz eine 
Beschreibung der entsprechenden Tabelle zu posten.
Z.B.:
mysql> DESCRIBE ;
oder
mysql> SHOW CREATE TABLE ;

viele Grüße
Martin

From yannik at cipher-code.de  Fri Feb 16 13:31:09 2007
From: yannik at cipher-code.de (Yannik Hampe)
Date: Fri, 16 Feb 2007 04:31:09 -0800
Subject: [php] doppelte ID
In-Reply-To: <6B8DE7FE-77AB-4C28-8732-AFF56A443D32@bluewin.ch>
References: <14422211.318761169653432675.JavaMail.webmail@ps24zhh.bluewin.ch>	<998F9915-07E6-4CCA-84B8-5F145CA188BD@bluewin.ch>	<45C1C789.9060104@mysql.com>	<45C7A470.9030209@mysql.com>	
	<6B8DE7FE-77AB-4C28-8732-AFF56A443D32@bluewin.ch>
Message-ID: <45D5A40D.9050002@cipher-code.de>



Thomas Hausheer wrote:
> Hallo
> 
> gibt es irgendeine Möglichkeit doppelte Einträge (ID) in einer MySQL  
> Tabelle zu verhindern?
> 
> Ausgangslage:
> MySQL Tabelle ID-> INT(11), auto_increment, unique
> 

Eine unique-Spalte sorgt eigetnlich schon dafür, dass es keine doppelten
Einträge gibt...
Hast du trotzdem doppelte???


> Gruss
> Thomsa

Yannik

From hans.egg at swissonline.ch  Fri Feb 16 14:20:01 2007
From: hans.egg at swissonline.ch (Hans Egg)
Date: Fri, 16 Feb 2007 14:20:01 +0100
Subject: [php]
 =?iso-8859-1?q?L=F6sung=3A_Aussperren_von_Rechnern_=28Off_T?=
 =?iso-8859-1?q?opic=29?=
In-Reply-To: <200702100929.16484.Lutz.Zetzsche@sea-rescue.de>
References: 
	<200702100929.16484.Lutz.Zetzsche@sea-rescue.de>
Message-ID: 

Hallo

Am 10.02.2007 um 09:29 schrieb Lutz Zetzsche:

> Am Samstag, 10. Februar 2007 00:46 schrieb Hans Egg:
>> Wie kommt es, dass eine bestimmte Domain genau von einem Rechner
>> nicht besucht werden kann?

> 1. Stimmen in allen Browsern auf dem Rechner die Proxy- und
> DNS-Einstellungen?
> 2. Wird die Domain denn bei Ping und Lookup in die richtige IP
> aufgelöst???

1. Ja
2. Vermeintlich Ja, bzw. von "außen" schlecht überprüfbar, wenn viele  
Domains auf dem gleichen Server dümpeln.

Die Domain hat vor einiger Zeit den Hoster gewechselt und der  
vorherige Hoster hat vergessen einen Eintrag auf seinen eigenen  
Server zu löschen. Dummerweise waren auf unserem Rechner die DNS  
genau dieses Providers eingestellt ...

Hans

From hans.egg at swissonline.ch  Fri Feb 16 14:45:49 2007
From: hans.egg at swissonline.ch (Hans Egg)
Date: Fri, 16 Feb 2007 14:45:49 +0100
Subject: [php] Bezeichnung von lokalen und Sessionvariablen
Message-ID: 

Hallo nochmals

Vielleicht eine Anfängerfrage, sorry.

Ich lese einen Wert aus aus einem Formular und speichere ihn in  
$_SESSION[a]. Wenn ich ihn in einem Script benötige, speichere ich  
ihn in einer lokalen Variable:

$a = $_SESSION[a]

Nun stelle ich fest, dass eine Veränderung von $a auch $_SESSION[a]  
beeinflusst. Ich hätte erwartet, dass dies nur geschieht, wenn ich  
eine Referenz zuweise:

$a = &$_SESSION[a]

Wo stehe ich auf dem Schlauch oder wo ist dieses Verhalten dokumentiert?

Danke und Gruß
Hans

From yannik at cipher-code.de  Sat Feb 17 00:02:17 2007
From: yannik at cipher-code.de (Yannik Hampe)
Date: Fri, 16 Feb 2007 15:02:17 -0800
Subject: [php] Bezeichnung von lokalen und Sessionvariablen
In-Reply-To: 
References: 
Message-ID: <45D637F9.4000304@cipher-code.de>



Hans Egg wrote:
> Hallo nochmals
> 
> Vielleicht eine Anfängerfrage, sorry.
> 
> Ich lese einen Wert aus aus einem Formular und speichere ihn in  
> $_SESSION[a]. Wenn ich ihn in einem Script benötige, speichere ich  
> ihn in einer lokalen Variable:
> 
> $a = $_SESSION[a]

Selbst diese Zeile kannst du dir sparen...:

  session_start();
  if (isset($_SESSION['a']))
  {
    $a ='test';
  }
  else
  {
    $_SESSION['a']='doof';
  }
  print_r($_SESSION);

--> Array ( [a] => test )
(ausser beim ersten Aufruf, wo es natürlich doof ist *gg*.

Das ist ein Nebeneffekt von Register Globals sein. Eigentlich müsste es
dann nicht nur mit $_SESSION, sondern auch mit $_REQUEST funktionieren
und dies funktioniert nicht.
Ich habe wirklich bedenken, dass dieses Verhalten so beabsichtig ist...

> Danke und Gruß
> Hans

Yannik

From michi at micneu.de  Fri Feb 16 15:29:27 2007
From: michi at micneu.de (Michi)
Date: Fri, 16 Feb 2007 15:29:27 +0100
Subject: [php] =?iso-8859-1?q?Tabellenzeilen_abwechselnd_farbig_darstellen?=
	=?iso-8859-1?q?_=28Anf=E4nger=29?=
Message-ID: <45CB2D9A0000259F@mfsv03.wf1.hansenet.de>

Hallo Leute,

Ich brauche eure Hilfe.

Habe eine Webseite mit Preislisten in Tabellen form die ich als cvs einlese,
das geht auch alles nur will ich jede 2te zeile ein farbwechsel haben so
ähnlich wie hier beschrieben
http://www.selfphp.de/kochbuch/kochbuch.php?code=31

nur ich bekomme das nicht hin.

hier mein code:


		
		
		
		
		
		
		
		\n";
print "
			Lfd Nr. 
			Waffentyp 
			Kaliber 
			Beschreibung 
			Beurteilung 
			Sonstige 
			Waffenbuch 
			Preis 
		\n";
while ( ($data = fgetcsv ($csvfile, 200, ";")) !== FALSE ) {
	if (trim($data[7]) == $ABFRAGE) {
		printf ("
					".$row."- 
					".$data[0]." 
					".$data[1]." 
					".$data[2]." 
					".$data[3]." 
					".$data[4]." 
					".$data[5]." 
					".$data[6]." 
			   \n",$row%2);
		$row++;
				
		}
}
fclose ($csvfile);
print '';
?>

Was mache ich Falsch?
In dem Beispiel wurde was von Modulo geschrieben? In meinen PHP Büchern ist
nix wirklich darüber zu finden.

Danke im Voraus, wünsche euch ein Nettes Wochenende?



From jakob.buchgraber at googlemail.com  Fri Feb 16 16:52:03 2007
From: jakob.buchgraber at googlemail.com (Jakob Buchgraber)
Date: Fri, 16 Feb 2007 16:52:03 +0100
Subject: [php]
 =?iso-8859-1?q?Tabellenzeilen_abwechselnd_farbig_darstellen?=
 =?iso-8859-1?q?_=28Anf=E4nger=29?=
In-Reply-To: <45CB2D9A0000259F@mfsv03.wf1.hansenet.de>
References: <45CB2D9A0000259F@mfsv03.wf1.hansenet.de>
Message-ID: <45D5D323.5090702@gmail.com>

Michi wrote:
> Hallo Leute,
>
> Ich brauche eure Hilfe.
>
> Habe eine Webseite mit Preislisten in Tabellen form die ich als cvs einlese,
> das geht auch alles nur will ich jede 2te zeile ein farbwechsel haben so
> ähnlich wie hier beschrieben
> http://www.selfphp.de/kochbuch/kochbuch.php?code=31
>
> nur ich bekomme das nicht hin.
>
> hier mein code:
>
> 
> $csvfile = fopen ($DateiMOD,"r");
> $row = 1;
> print "
> 		> 		> 		> 		> 		> 		> 		> 		\n";
> print "
> 			
> 			
> 			
> 			
> 			
> 			
> 			
> 			
> 		\n";
> while ( ($data = fgetcsv ($csvfile, 200, ";")) !== FALSE ) {
> 	if (trim($data[7]) == $ABFRAGE) {
> 		printf ("
> 					
> 					
> 					
> 					
> 					
> 					
> 					
> 					
> 			   \n",$row%2);
> 		$row++;
> 				
> 		}
> }
> fclose ($csvfile);
> print '
Lfd Nr. Waffentyp Kaliber Beschreibung Beurteilung Sonstige Waffenbuch Preis
".$row."- ".$data[0]." ".$data[1]." ".$data[2]." ".$data[3]." ".$data[4]." ".$data[5]." ".$data[6]."
'; > ?> > > Was mache ich Falsch? > In dem Beispiel wurde was von Modulo geschrieben? In meinen PHP Büchern ist > nix wirklich darüber zu finden. > > Danke im Voraus, wünsche euch ein Nettes Wochenende? > > > Du hast halt nen Counter ($row in deinem Beispiel) der bei jeder Reihe um 1 erhöht wird. Ja und dann prüfst du halt einfach: if ($row%2 == 0) { // die eine farbe } else { // die andere farbe } Modulo gibt den Ganzzahligen Rest einer Division zurück. MfG Jay -- My system configuration (Gentoo Linux): http://www.linux-stats.org/index.php?c=userpage&sys=810 Registered Linux User #373457 From development at d-down.de Sat Feb 17 00:09:52 2007 From: development at d-down.de (Dejan Spasic) Date: Sat, 17 Feb 2007 00:09:52 +0100 Subject: [php] =?iso-8859-1?q?Tabellenzeilen_abwechselnd_farbig_darstellen?= =?iso-8859-1?q?_=28Anf=E4nger=29?= In-Reply-To: <1aa418e9557e5a890d12e0a5975bf864@micneu.de> References: <000001c751eb$ee805260$0a01a8c0@zc> <4CC46E4B9BAC4DC9A09AAE9625B56021@reti1> <1aa418e9557e5a890d12e0a5975bf864@micneu.de> Message-ID: <1171667392.6228.5.camel@localhost> Am Freitag, den 16.02.2007, 22:23 +0100 schrieb Michi: > Danke Leute, > > Habe eine andere Lösung entdeckt... ist mir eben gerade beim TV Schauen > gekommen. Was nicht alles beim TV schauen so kommt :P From development at d-down.de Sat Feb 17 00:21:15 2007 From: development at d-down.de (Dejan Spasic) Date: Sat, 17 Feb 2007 00:21:15 +0100 Subject: [php] Bezeichnung von lokalen und Sessionvariablen In-Reply-To: References: Message-ID: <1171668075.6228.13.camel@localhost> Am Freitag, den 16.02.2007, 14:45 +0100 schrieb Hans Egg: > $a = $_SESSION[a] > > Nun stelle ich fest, dass eine Veränderung von $a auch $_SESSION[a] > beeinflusst. Ich hätte erwartet, dass dies nur geschieht, wenn ich > eine Referenz zuweise: > > $a = &$_SESSION[a] Das ist auch richtig... Wenn es wirklich so der Fall sein sollte, dann müsste sich auch der Wert in der Variable $a auch ändern wenn du es in der SESSION änderst. Ist es auch so...? Welche PHP Version verwendest du und auf welches OS ist diese Verhalten zu beobachten? Kann man von dem relevante Quellcode mehr sehen? From holliwell at gmx.net Sat Feb 17 15:41:55 2007 From: holliwell at gmx.net (Friedhelm Betz) Date: Sat, 17 Feb 2007 15:41:55 +0100 Subject: [php] PHP 5.2 - Problem-Software In-Reply-To: References: <86462F7A9D844FE89018CC5BA6EE8BD3@reti1> Message-ID: <45D71433.10309@gmx.net> Rene Thiel wrote: > Guten Morgen, > > ich erlaube mir nochmals höflichst anzufragen: > > kennt jemand einen Link, wo Software-Probleme / Problem-Software > gelistet werden / wird, wenn man von PHP 4.4 auf PHP 5.2 umsteigt? > Beispiel: date_format (User-Funktion bei Phorum 3.4.1) > php.net -> suche: upgrade guide Vielleicht ein brauchbarer Anfang ;-) Aber wahrscheinlich nicht wirklich das, was Du suchst? Schöne Grüße Friedhelm From marco.weber at uni-trier.de Sun Feb 18 15:30:59 2007 From: marco.weber at uni-trier.de (Marco Weber) Date: Sun, 18 Feb 2007 15:30:59 +0100 Subject: [php] Bitrate von MP3s und ID3 auslesen... Message-ID: <45D86323.7040603@uni-trier.de> Hallo Leute, Ich habe in einem Ordner MP3 Dateien liegen... Ich würde gerne auf einer Webseite all meine MP3s ausgeben die in dem Ordner sind... Im moment gebe ich von allen MP3 Dateien den Dateinamen aus. Nun würde ich zusätzlich noch gerne die Bitrate und die ID3 Infos ausgeben... Wer weiss von euch wie ich die Bitrate (und ID3) bestimmen kann? Gibt es da bestimmte Bibliotheken? LG Marco From info at runge.it Sun Feb 18 15:35:11 2007 From: info at runge.it (Niels Runge) Date: Sun, 18 Feb 2007 15:35:11 +0100 Subject: [php] Bitrate von MP3s und ID3 auslesen... In-Reply-To: <45D86323.7040603@uni-trier.de> References: <45D86323.7040603@uni-trier.de> Message-ID: <45D8641F.3000106@runge.it> Hallo Marco, > Ich habe in einem Ordner MP3 Dateien liegen... > Ich würde gerne auf einer Webseite all meine MP3s ausgeben die in dem > Ordner sind... > > Im moment gebe ich von allen MP3 Dateien den Dateinamen aus. > > Nun würde ich zusätzlich noch gerne die Bitrate und die ID3 Infos > ausgeben... > > Wer weiss von euch wie ich die Bitrate (und ID3) bestimmen kann? > 26.9. Wie kann ich ID3-Tags von MP3-Dateien lesen/schreiben? http://www.php-faq.de/q/q-scripte-mp3-tags.html Das ist der erste Treffer von Google bei der Suche nach "id3 php" Falsche Stichwörter genommen bei der Suche oder noch gar nicht gesucht?? Grüße Niels From nico.haase at gmx.de Sun Feb 18 15:44:01 2007 From: nico.haase at gmx.de (Nico Haase) Date: Sun, 18 Feb 2007 15:44:01 +0100 Subject: [php] Bitrate von MP3s und ID3 auslesen... In-Reply-To: <45D86323.7040603@uni-trier.de> References: <45D86323.7040603@uni-trier.de> Message-ID: <45D86623.5020700@gmx.de> Moin, Marco Weber schrieb: > Wer weiss von euch wie ich die Bitrate (und ID3) bestimmen kann? Google weiß es: http://leknor.com/code/php/class.id3.php.txt existiert, http://www.php-center.de/artikel/id3.php3 oder http://de3.php.net/manual/de/ref.id3.php auch. mfg Nico From hans.egg at swissonline.ch Sun Feb 18 17:35:06 2007 From: hans.egg at swissonline.ch (Hans Egg) Date: Sun, 18 Feb 2007 17:35:06 +0100 Subject: [php] Bezeichnung von lokalen und Sessionvariablen In-Reply-To: <1171668075.6228.13.camel@localhost> References: <1171668075.6228.13.camel@localhost> Message-ID: <1F78DCBF-F013-41DF-A06A-B0759BE371A9@swissonline.ch> Hallo Dejan Am 17.02.2007 um 00:21 schrieb Dejan Spasic: > Am Freitag, den 16.02.2007, 14:45 +0100 schrieb Hans Egg: > >> $a = $_SESSION[a] >> >> Nun stelle ich fest, dass eine Veränderung von $a auch $_SESSION[a] >> beeinflusst. Ich hätte erwartet, dass dies nur geschieht, wenn ich >> eine Referenz zuweise: >> >> $a = &$_SESSION[a] > > Das ist auch richtig... Wenn es wirklich so der Fall sein sollte, dann > müsste sich auch der Wert in der Variable $a auch ändern wenn du es in > der SESSION änderst. Ist es auch so...? Welche PHP Version > verwendest du > und auf welches OS ist diese Verhalten zu beobachten? PHP 5.1 auf www.bfq.ch/biofotoquiz/phpinfo.php PHP 5.2 XAMPP auf Windows PHP 5.0.5 XAMPP auf Mac > Kann man von dem relevante Quellcode mehr sehen? www.bfq.ch/biofotoquiz/varTest.php Hier und auf meinem Testserver mit PHP 5.2. funktioniert IMHO alles korrekt. Es verhält sich anscheinend nur der Testserver mit PHP 5.0.5 unerwartet. Beim ersten Aufruf sieht das so aus: session_start(); $a = 'a'; $_SESSION['a'] = $a; a = a session = Array ( [a] => a ) $_SESSION['a'] = 'b'; a = a session = Array ( [a] => b ) $a = 'c'; a = c session = Array ( [a] => b ) Beim weiteren Aufrufen dieser Seite ergibt sich dann dies: session_start(); $a = 'a'; $_SESSION['a'] = $a; a = a session = Array ( [a] => a ) $_SESSION['a'] = 'b'; a = b session = Array ( [a] => b ) $a = 'c'; a = c session = Array ( [a] => c ) Ob das nun ein Bug in PHP 5.0.5 oder in XAMPP für Mac ist? ("Die Mac OS X und Solaris Versionen befinden sich noch in der Entwicklung. Benutzung auf eigene Gefahr.") Gruß, Hans From hans.egg at swissonline.ch Sun Feb 18 21:56:41 2007 From: hans.egg at swissonline.ch (Hans Egg) Date: Sun, 18 Feb 2007 21:56:41 +0100 Subject: [php] Bezeichnung von lokalen und Sessionvariablen In-Reply-To: <45D9037C.3030202@cipher-code.de> References: <1171668075.6228.13.camel@localhost> <1F78DCBF-F013-41DF-A06A-B0759BE371A9@swissonline.ch> <45D9037C.3030202@cipher-code.de> Message-ID: Danke Yannik, jetzt kann ichs nachvollziehen: Am 19.02.2007 um 02:55 schrieb Yannik Hampe: > Hans Egg wrote: >> >> Hier und auf meinem Testserver mit PHP 5.2. funktioniert IMHO alles >> korrekt. Es verhält sich anscheinend nur der Testserver mit PHP 5.0.5 >> unerwartet. > > *nochmal auf meinen Code verweis* > Der "klappt" nämlich auf php 5.2.0 auf Windows und Linux, solange > register_globals an ist! Genau. Auf dem einen Testserver ist register_globals ON, beim Hoster und auf dem Windows-XAMPP OFF. Ich versuche dann mal, die Einstellungen auf meinem Mac-XAMPP anzupassen. Hans