Tach Community,
ich stehe vor einem bloeden Problem.
Vorab: Bitte nicht den Sinn meiner Problemlösung in Frage stellen.
Die Situation ist gegeben und leider nicht anders lösbar.
Aufgabenstellung:
im Intranet existiert eine Webschnittstelle zum einstellen von Daten.
Um nicht alle Daten per Hand eingeben zu müssen, wollte ich dies
in einer schleife mit http_post_fields() aus dem PECL paket umsetzen.
Leider komme ich aus der Schleife nicht mehr raus.
Prinzip ist :
nehme datenarray und setze POST an „fremde“ intranet seite ab.
dann nehme naechsten array und durchlaufe alle arrays.
simple:
fields[] = array(
'vorname'=\>'Thorsten',
'nachname'=\>'Mustermann',
'strasse'=\>'Mongoweg 1');
fields[] = array(
'vorname'=\>'Thorsten',
'nachname'=\>'Mustermann',
'strasse'=\>'Mongoweg 1');
foreach ($fields as $field){
$response = http\_post\_fields("http://intranet.dev/form.php",$field);
}
Leider gibts irgendwann einen Timeout.
Meine nächste Idee war es…
einen header(„location:URL“) in die schleife einzubauen…
aber da bekomme ich vom browser sofort die meldung, ich haette eine
endlosschleife produziert.
Gruebel. Wo ist denn hier mein denkfehler.
merci
PixelKoenig
probier es mal mit
<?php max_execution_time(0); ?>
probier es mal mit
<?php max_execution_time(0); ?>
lt php.net keine exisitierende function…
denke du meinst set_time_limit(0);
da würde ich aber aufpassen, vor allem wenn du dies in einer Schleife nutzt.
führt ganz gern mal zu nicht mehr abrechbaren http requests.
@Pixel hast du shell zugriff auf den server? kannst du das script als cli version ausführen? da gibt es keine max execution time
gruß
Befinden sich die POST-Felder auf der Zielseite jeweils einzeln auf der Seite (sind es mehrere POST-Requests?) oder sind alle Felder auf der gleichen Seite (nur ein POST-Request?). Im letzteren Fall könnte auch die Verwendung der CURL-Erweiterung (ohne PECL-Wrapper) eine Idee sein.
in einer schleife mit http_post_fields() aus dem PECL paket
umsetzen.
Leider komme ich aus der Schleife nicht mehr raus.
[1]
simple:
…
foreach ($fields as $field){
$response =
http_post_fields(„http://intranet.dev/form.php“,$field);
}
Leider gibts irgendwann einen Timeout.
du musst erst mal erklaeren was du mit [1] meinst, und was bis zum timeout passiert - kriegst du gar keine daten gepostet, oder hast du soviele, dass du bis zum timeout nicht fertig wirst?
Meine nächste Idee war es…
einen header(„location:URL“) in die schleife einzubauen…
aber da bekomme ich vom browser sofort die meldung, ich haette
eine
endlosschleife produziert.
logisch: eine umleitung auf die aktuelle url…
ein header location in die schleife macht auch nicht so richtig sinn - es zaehlt ja nur einer…
aber so aehlich:
du nimmst nur 10 datensaetze - wenn du weisst, dass du vor dem timeout 10 saetze schaffst - und gibst nach der schleife ein javascript location.reload o.ä. aus. dann kommen die naechsten 10 saetze
fuer das archiv: der op weiss, dass der ansatz gefrickel ist 