PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   [gelöst] SESSION und PHP-Timeout (https://www.php-resource.de/forum/php-developer-forum/97956-geloest-session-und-php-timeout.html)

Gunah 02-11-2009 11:13

[gelöst] SESSION und PHP-Timeout
 
Moin,

hier geht es nicht um die SESSION Timeouts sondern, um die Timeouts von PHP!, also ich meine damit nicht, nach welcher Zeit die SESSION beendet werden soll!
habe zu dem Thema leider nichts gefunden :-(

und zwar habe ich ein Script, welches Daten von A nach B Konvertiert... allerdings sind dieses recht viele Daten... daher lasse ich viel per SESSION Cachen... und per if else Abfragen..., soweit so gut.

Allerdings ist mir aufgefallen, dass wenn es bei dem Script zum TimeOut kommt, werden die Daten nicht weiter in die SESSION geschrieben...

was allerdings in meinem Fall nicht so dolle ist...

habe als "Lösung" überlegt, den kompletten Inhalt (oder nur teile, die in dem Step geschrieben werden) als serialize-Array [1] zu speichern. und dann wieder beim erneutem Starten der Datei einzulesen...

nur hoffe des es evtl. eine Lösung von Haus aus gibt... nur weiss auch nicht wo nach ich bei den SuMas suchen soll, da "SESSION Timeout" ja andere Ergebnis liefert

Gruß
Gunah

[1] PHP: serialize - Manual

onemorenerd 02-11-2009 13:07

Zitat:

Zitat von Gunah (Beitrag 628230)
Allerdings ist mir aufgefallen, dass wenn es bei dem Script zum TimeOut kommt, werden die Daten nicht weiter in die SESSION geschrieben...

Wie auch? Beim Timeout wird der Prozess gekillt. Das Script läuft also an irgendeiner Stelle einfach nicht weiter.

1. Große Datenmengen sollte man nicht in der Session speichern.
2. Gegen Timeouts hilft set_time_limit() oder das Kopieren in Chunks.

Gunah 02-11-2009 13:10

das mit set_timeout_limit ist bekannt, bringt aber nur was bei CGI oder mod_php, bei FCGI ist man da verloren :-/, da Fast-cgi/SuEXEC einen eigenen Timeout hat. Standard ist dieser bei 40 sekunden.

Asso, es sind keine Großen Datenmengen, und zwar wird ein array erstellt mit IDs, und dennen wird ein boolean übergeben mehr nicht...
die Daten die verarbeitet werden sind nicht in der Session

Gruß
Gunah

onemorenerd 02-11-2009 13:18

40 Sekunden genügen dir nicht, um ein Array mit IDs und Booleans zu füllen?! Zeig doch mal den rlevanten Code, da kann doch was nicht stimmen.

Gunah 02-11-2009 13:25

Es wird ein Select auf der Datenbank von XTC durchgeführt:
Code:

-- select images
        SELECT
            products_id,
            image_name,
            image_nr
        FROM
            products_images
        ORDER BY
            products_id ASC

mit CURL runtergeladen:
PHP-Code:

 $ch curl_init();
               
curl_setopt($chCURLOPT_URL$imagepath $row['image_name']);
               
curl_setopt($chCURLOPT_HEADER0);
               
curl_setopt($chCURLOPT_BINARYTRANSFERtrue);
               
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
               
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
               
$curl curl_exec($ch);
               
curl_close($ch);
               if(
$curl) {
                   
file_put_contents($image,$curl);
               } 

und ein Eintrag in die SESSION gepackt mit der ID des Produktes und der Nummer des Bildes...
im nächsten Step werden dann die Heruntergeladenen Elemente per in eine Proprietäres import script geladen (Klasse, Quellcode liegt von der Klasse nicht vor, nur eine Doku) und dort werden dann die Bilder umgewandelt, und 4 Verschiedene Ansichten erstellt...

onemorenerd 02-11-2009 13:32

Wie läuft das ab, holst du erstmal alle Bilder, speicherst sie lokal und konvertierst sie dann? Oder holst du eins nach dem anderen und konvertierst es gleich? Der Codeauszug ist ein bißchen knapp gehalten.

Gunah 02-11-2009 13:36

ne lade sie erst runter, dann kommt ein weiter Button, dann werden Sie konvertiert.

Alles andere wäre zu heftig, also in einem Step...

Als Zahl es sind ca. 1200 Bild Datei, von jedem werden 4 Bilder generiert.

[ich denke mal in der Klasse wurde das mit GDlib gemacht (ist ein Import Script für ein anderes System, sprich Produkt import)]

onemorenerd 02-11-2009 14:48

Zitat:

Zitat von Gunah (Beitrag 628241)
dann kommt ein weiter Button

Und der kommt noch? Dann hat das Runterladen ja schon mal geklappt.
40s für 4800 Bilder könnte knapp werden. Aber ohne Code kann man dazu nicht viel mehr sagen.

Gunah 02-11-2009 14:52

PHP-Code:

$import->ImportArticleImages($ID$array_mit_pfad_zu_den_bildern); 

mehr kann ich da auch nicht liefern, wie gesagt kein offener Quellcode... ich will bei fragen auch immer Quellcode sehen, aber könnte nur den Binary-Code posten, was aber keinen Sinn macht...

habe es per JS gelöst, dass wenn ein timeout zum Browser kommt, wird 15 sekunden, lang gecheckt ob nicht doch was im Hintergrund läuft... und dann wird das Script neugestartet und mit einem anderen ARRAY vergleichen, wo drin steht, welche Bilder schon importiert wurden und welche nicht, das gleiche gilt bei Download...

onemorenerd 02-11-2009 14:57

:goth: Was ist denn "Hintergrund"?

Warum verarbeitest du nicht einfach x Bilder, sendest dann einen Location-Header an den Client, der das selbe Script noch einmal aufruft, aber per Parameter mitteilt mit welchem Bild nun weitergemacht werden soll?

Gunah 02-11-2009 15:00

*an kop fass*... xD

dank dir... für den Tipp...
hätte auch selber drauf kommen können...


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:13 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG