[PHP] Trigger van remote script zonder uitladen (curl)

Pagina: 1
Acties:

Onderwerpen


  • soap
  • Registratie: December 2000
  • Laatst online: 17:27

soap

diskoers.

Topicstarter
Ik kan niets soortgelijks vinden en ik weet ook niet of het mogelijk is; maar daar bieden jullie uitkomst aan hoop ik ;)

Ik heb een script ( A ) dat wat handelingen uitvoert en in een crontab elke 10 minuten wordt opgevraagd; deze handelingen hebben variabele 'behandeltijden'. De ene keer is het script in een miliseconde uitgevoerd de andere keer kan er een minuut overheen gaan; ik flush om de zoveel tijd wat data om geen timeout te krijgen in de cron.
Als dit script klaar is met executen moet hij aan het einde een ander php script ( B ) op een remote server triggeren. Dit script duurt sowieso altijd langer qua executen dan script A en ik wil niet dat script A hierdoor blijft wachten tot script B klaar is.
Is dit mogelijk via curl? Ik heb het oa getest met
code:
1
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

Alleen door een sleep(10) in het remote script kwam ik er al achter dat ook deze heel het script afwacht ook bij tussendoor flushen.

Iemand een oplossing of een "sorry dat kan niet" dan kan ik er iets anders voor gaan verzinnen ;)

.


  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Dit kan als je het andere script, script B, de verbinding laat verbreken nadat 'ie is opgevraagd.

  • soap
  • Registratie: December 2000
  • Laatst online: 17:27

soap

diskoers.

Topicstarter
Bedankt! ik had het al geprobeerd zo maar blijkbaar op de verkeerde manier.
Deze oplossing uit de reacties van php.net doet de truc alhoewel ik denk dat het wel mooier kan ;)
The solution is to explicitly turn off output buffering and clear the buffer prior to sending your header information.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 ob_end_clean();
 header("Connection: close");
 ignore_user_abort(); // optional
 ob_start();
 echo ('Text the user will see');
 $size = ob_get_length();
 header("Content-Length: $size");
 ob_end_flush(); // Strange behaviour, will not work
 flush();            // Unless both are called !
 // Do processing here
 sleep(30);
 echo('Text user will never see');
?>

.