Arbeitsspeicher geht beim drucken über PHP verloren
eXos
- php
Hallo Zusammen
Ich habe ein problem beim Drucken über PHP. Ich benutze den xampp Server auf einer Windows Plattform (php 5.2.3). Die Version der php_printer.dll ist 5.2.2.2.
Das unten angefügte Script frisst nach jedem Durchlauf in etwa 1.2MB Arbeitsspeicher:
<?php
for($i=0;$i<10;$i++)
{
$handle = printer_open("192.168.0.101");
printer_start_doc($handle, "Audruck");
printer_end_doc($handle);
printer_close($handle);
//auch das hilft nicht:
unset($handle);
$handle=null;
}
?>
Bei mehreren 100 gedruckten Seiten geht der Arbeitsspecher dann mal langsam zu ende, was ein Problem verursacht.. Gibt es irgendwelche Lösungen, mit denen der Speicher freigegeben werden kann?
Bin für jeden Hinweis sehr dankbar!
Mit frreundlichen Grüssen
eXos
Hi eXos!
Warum öffnest du den Drucker nicht außerhalb der For-Schleife?
MfG H☼psel
Der code entspricht nicht ganz der Wirklichkeit. Pro Aufruf der Seite wird prinzipiell nur ein Druckauftrag ausgelöst. Der nimmt dann auch "nur" etwa 100kb.
Der Code hier, sowie die Schleife darum, sollen eigentlich nur zeigen in welcher Art das ganze aufgerufen wird. Die Schleife dient dazu, dass der Effekt beim Testen besser sichtbar ist.
echo $begrüßung;
Der code entspricht nicht ganz der Wirklichkeit. Pro Aufruf der Seite wird prinzipiell nur ein Druckauftrag ausgelöst. Der nimmt dann auch "nur" etwa 100kb.
Der Code hier, sowie die Schleife darum, sollen eigentlich nur zeigen in welcher Art das ganze aufgerufen wird. Die Schleife dient dazu, dass der Effekt beim Testen besser sichtbar ist.
Solche Informationen sind ja nicht ganz unwichtig, um den Antwortenden nicht in die falsche Richtung laufen zu lassen.
Mir fallen nur zwei Lösungen ein. PHP als CGI betreiben, dann geht nach dem Request das PHP nach Hause und belegter Arbeitsspeicher sollte wieder freigegeben werden. Oder PHP-Bugreport ausfüllen und vorher nachschauen, ob das Problem schon gemeldet ist.
echo "$verabschiedung $name";
Danke, habe den Bug bei http://pecl.php.net/bugs/ gepostet. Hoffentlich taucht eine Lösung auf, andernfalls werde ich mich wohl mit CGI beschäftigen müssen (habe 0 ahnung von dem...).