Autor | Zpráva | ||
---|---|---|---|
Paul Profil * |
#1 · Zasláno: 16. 1. 2012, 20:59:51
Zdravim,
dá se nějakým způsobem vyřešit to, když potřebuji vložit do prováděného php skriptu další skript s předáním proměných s tím, že nechci čekat na ukončení vloženého, nepotřebují již z něj žádný výstup - jeho provádění trvá déle. Pokoušel jsem funkci exec() ,ale nikdy se ten vložený skript neprovedl. Díky za nápady |
||
Alphard Profil |
#2 · Zasláno: 17. 1. 2012, 02:12:17
|
||
Paul Profil * |
#3 · Zasláno: 17. 1. 2012, 07:10:22
Omlouvám se, večer jsem už neměl sílu.
Dobrá, takže mám skript na který volá datová jednotka (tudíž je klientem a s prohlížeče se nikdy vykonávat nebude), která mu předává data, v případě, že nastane nějaká mnou definovaná podmínka, tak bych potřeboval zavolat skript a předat mu nějaké proměné, s tím, že se ten volaný vykonává delší dobu a já nechci aby se na něj čekalo, ale aby se původní skript provedl hned až do konce, bez čekání na odpověď vloženého skriptu. Já si to slále představuji, že ten druhý jen "pošťouchnu". V tom volaném php je totiž vykonání odeslání SMS zprávy přes API, která volá další server a vpřípadě odesílání více sms operace trvá,chybové výstupy bych si představoval, že budu ukládat například do nějakého logu tzn, že původnímu skriptu nechci již nic předávat. Zjednodušeně: <?php $a=1; $b=2; $c=3; $vykonat_skript=1; if($vykonat_skript==1) # ----> s tím že se pouze nějakým způsobem zavolá(pošťouchne) a bude pokračovat dále ve vykonávání #a budou v něm platit, nebo budou nějakým způsobem předány proměné include_once "./smsapi.php"; #zde bude například ukládání do databáze a zobrazí se ještě výstup pro jednotku např.: echo $a + $b + $c; ?> |
||
Alphard_ Profil * |
#4 · Zasláno: 17. 1. 2012, 11:26:48
Jestli chcete paralelní zpracování tak nejlépe přes http pingnout další stránku, která hned uzavře spojení ale bude pracovat dál. Předání dat pomocí get nebo post.
|
||
Paul Profil * |
#5 · Zasláno: 17. 1. 2012, 14:20:39
ano přesně tak, můžete mě nějak napingnout? Snažím se něco vygooglit, ale nic nenalézám..
Děkuji |
||
Alphard_ Profil * |
#6 · Zasláno: 17. 1. 2012, 22:37:01
Paul:
V čem je problém, předat proměnné do adresy a zavolat soubor, nebo v tom volaném uzavřít spojení? |
||
Paul Profil * |
#7 · Zasláno: 18. 1. 2012, 08:27:58
tak nejprve obojí, ale teď už jsem se dopátral k tomu jak zavolat skript a předat data, narazil jsem na funkci PCNTL , tu jsem si zkusil doinstalovat a povolit v php.ini, ale nedařilo se.
No a nyní jsem vymyslel toto, a teď je problém, že nevím jak spojení zavřít dříve než se dokončí volaný skript <?php #hlavička $params = stream_context_create(array('http' => array( 'method' => 'GET', 'header' => 'Content-type: text/html', 'encoding' => 'UTF-8' ))); #otevření spojení $handle = fopen("http://localhost/test.php?var=OK",'rb',false,$params); fclose($handle); echo 'Konec skriptu'; ?> a ve volaném skriptu test.php je: <?php #zpoždění 5 vteřin abych poznal zda se čeká na vykonání (nevím, jestli to není blbost) sleep(5); $soubor= fopen("abrakadabra.txt", "w+"); fwrite($soubor, $_GET['var']); fclose($soubor); ?> |
||
Paul Profil * |
#8 · Zasláno: 18. 1. 2012, 12:59:36
tak jsem vytvořil tohle, jen se chci zeptat jestli to není tak trochu "prasarnička", když budu potřebovat skript zavolat vícekrát (max třeba 20krát) vždy s předáním jiných parametrů
<?php for($i=0;$i < 5; $i++) { $f = fsockopen("localhost", 80, $errno, $errstr, 5); if ($f) { fwrite($f, "GET /test.php?var=1&cykl=c$i HTTP/1.1\n". "Host: localhost\n". "Connection: Close\n\n"); } fclose($f); } echo 'Konec skriptu'; ?> skript test.php: <?php sleep(5); $soubor= fopen("./pokus/". $_GET['cykl'] .".txt", "w+"); fwrite($soubor, $_GET['var']); fclose($soubor); ?> |
||
Časová prodleva: 12 let
|
0