Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Ignore_user_abort и с чем его едят (https://forum.antichat.xyz/showthread.php?t=86893)

Gifts 30.09.2008 13:25

Ignore_user_abort и с чем его едят
 
К примеру, есть такой скрипт
PHP код:

 @set_time_limit(0);
@
ini_set("max_execution_time"0);
@
ignore_user_abort(1);

switch (
$_GET['cmd'])
{
    case 
'start':
        
$f=fsockopen('ya.ru',80);
        
$status=stream_get_meta_data($f); 
        while (!
$status['eof']) 
        {
            
sleep(1);
            
$status=stream_get_meta_data($f); 
        }
    break;
    case 
'send':
        
$out "GET / HTTP/1.1\r\n";
        
$out .= "Host: ya.ru\r\n";
        
$out .= "Connection: Close\r\n\r\n";
        
fwrite($f$out);
        while (!
feof($f)) 
        {
            echo 
fgets($f128);
        }
    
fclose($f);
    break;


При обращении к скрипту ?get=start создается подключение к серверу. Теперь мы можем закрыть например страницу/уйти пить чай/etc.

Наконец мы хотим отправить в это созданное подключение, какую то информацию.

Собственно вопрос - как это реализовать и возможно ли это? Вижу только несколько путей -
1) в цикле обработки while мы делаем обращение к файлам/базе и забираем оттуда информацию которую нужно отправить.
2) Каким то образом записываем resource от созданного подключения и обращаемся с ним (возможно ли?)

P.S. ну и такой вопрос - как остановить выполнение скрипта с ignore_user_abort и set_time_limit(0) без перезапуска apache

madnet 30.09.2008 13:58

второй вариант невозможен.
Проще всего делать так как писал в варианте 1, а остановку скрипта так же вызывай через переданный параметр и exit, ну а если требуется кильнуть левый скрипт с ignore_user_abort, то делай kill на pid от php процесса, хотя это зависит от метода подключения php к апачу.


Время: 00:57