ako spustiť php, keď aktuálny skript dokončí použitie curl? nemôžem použiť shell alebo set_time_limit na vytvorenie slučky skriptu.
ÚPRAVA:Chcem byť schopný použiť curl na volanie rovnakého skriptu, ale keď použijem curl_exec, nechcem, aby skript počkal, kým curl skončí, chcem iba, aby zavolal stránku a pokračoval bez toho, aby som čakal na dokončenie .
EDIT:
pomocou tohto kódu na začiatku skriptu
ignore_user_abort(true);
header("Content-Length: 0");
header("Connection: close");
flush();
potom pomocou zvlnenia, aby sa skript nazval sám, funguje v systéme Windows, ale v systéme Linux to nerobí, chcem, aby zvlnenie zavolalo stránku a nečakalo na odpoveď
Vďaka
odpovede:
3 pre odpoveď č. 1Chcete byť schopní spustiť požiadavku CURL bez toho, aby ste na ňu čakali.
Za normálnych okolností začnete nové vlákno, v ktorom sa spustí požiadavka CURL, ale PHP nemá podporu pre viacvláknové spracovanie.
s popen alebo proc_open, môžete spustiť proces na pozadí, pokiaľ ho máte povolené. Môžete spustiť skript CLI PHP a vykonať svoju požiadavku CURL.
Ďalším nápadom je iba napísať požiadavku do tabuľky DB a každých X minút nechať urobiť prieskum cron CLI skriptu v tejto tabuľke a vykonať akúkoľvek čakajúcu požiadavku.
1 pre odpoveď č. 2
Našiel :
pridanie tohto na začiatok skriptu:
ignore_user_abort(true);
header("Content-Length: 256");
header("Connection: close");
echo(str_repeat(" ",256));
@ob_flush();
@flush();
@ob_end_flush();
potom zavolajte tento 1_script z iného 2_script cezcurl umožňuje druhému skriptu 2_script dokončiť proces bez čakania na dokončenie skriptu 1_script! . iba to, že zvlnenie neprečíta hlavičku „connection: close“ pred prijatím 256 bajtov, takže ich pošleme cez medzery :)