http_post_field in schleife

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 :smile: