Ich habe eine Reihe von POS-Systemen (Point of Sale), die regelmäßig neue Verkaufsdaten an eine zentrale Datenbank senden, die die Daten zur Berichterstellung in einer großen Datenbank speichert.
Die Client-Kasse basiert auf PHPPOS, und ich habe ein Modul implementiert, das die Standard-XML-RPC-Bibliothek verwendet, um Verkaufsdaten an den Dienst zu senden. Das Serversystem basiert auf CodeIgniter und verwendet die XML-RPC und XML-RPCS Bibliotheken für die Webservice-Komponente. Immer wenn ich viele Verkaufsdaten sende (nur 50 Zeilen aus der Verkaufstabelle und einzelne Zeilen aus sales_items, die sich auf jeden Artikel innerhalb des Verkaufs beziehen), erhalte ich den folgenden Fehler:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 54 bytes)
128M ist der Standardwert in php.ini
aber ich gehe davon aus, dass das eine große Zahl ist, die es zu knacken gilt. In der Tat habe ich sogar versucht, diesen Wert auf 1024M, und alles, was es tut, ist eine längere Zeit dauern, um Fehler aus.
Was die Schritte angeht, die ich unternommen habe, so habe ich versucht, alle Verarbeitungen auf der Serverseite zu deaktivieren, und ich habe es so eingerichtet, dass ich unabhängig von der Eingabe eine vorgefertigte Antwort erhalte. Ich glaube jedoch, dass das Problem in der tatsächlichen Übermittlung der Daten liegt. Ich habe sogar versucht, die maximale Skriptausführungszeit für PHP zu deaktivieren, und es tritt immer noch ein Fehler auf.
6 Stimmen
Ich bin etwas verwirrt... wo tritt der Fehler auf - im Client oder im Server? Und in welchem Stadium... Client sendet, Server empfängt, Server verarbeitet, Server sendet, Client empfängt oder Client verarbeitet?
0 Stimmen
Wie/wo setzen Sie das memory_limit auf 1024M?
3 Stimmen
Der Fehler scheint entweder beim Senden durch den Client oder beim Empfangen durch den Server aufzutreten. Ich habe versucht, die gesamte serverseitige Verarbeitung zu deaktivieren und den Server so einzustellen, dass er unabhängig von den gesendeten Daten eine Standardantwort sendet. Der Fehler tritt auf, wenn ich mehr als eine bestimmte Menge an Daten sende. Ich habe die PHP.ini-Einstellung geändert.
1 Stimmen
Hier ist der Code, den ich verwende... Ich habe die XML-RPC-Bibliothek für den Client als auch verwendet enthalten: yousendit.com/download/U0d4SlIzcVg4aVBIRGc9PQ (Kunde) yousendit.com/download/U0d4SlIzcVhPSHhMWEE9PQ (Codeigniter Controller) Vielen Dank für Ihre Zeit, im Voraus :)
59 Stimmen
Speicherlimit ist 128MB, verdoppeln Sie es:
ini_set('memory_limit', '256M');
17 Stimmen
In der Zusammenfassung wurden alle "Ignorieren Sie einfach das Leck"-Antworten heruntergestuft, ebenso wie die Antworten von Leuten, die CodeIgniter mit Drupal verwechselten, und von Leuten, die einfach die Antworten anderer kopierten und einfügten, um Punkte zu bekommen. Die Qualität der Antworten in diesem Test ist miserabel.
2 Stimmen
Mögliches Duplikat von Erlaubte Speichergröße von 33554432 Bytes ausgeschöpft (versucht, 43148176 Bytes zuzuweisen) in php
2 Stimmen
Keine der Antworten scheinen auf die Tatsache, dass die zugewiesene Speichergröße nicht tatsächlich überschritten wird (wie pro den Fehler), sieht aus wie eine Endlosschleife Situation.
0 Stimmen
Die Anzahl der Leute, die vorschlagen, ein potenzielles Speicherleck zu ignorieren, ist hier verblüffend. Ich habe noch nie so viele schlechte Ratschläge zur Speicherverwaltung auf einem Fleck gesehen.