Android Tablet PC на DHgate.com


Асинхронное выполнение php-скриптов

Бывает, что в процессе работы какого-то скрипта необходимо выполнить другой скрипт и ждать, пока он закончит свою работу. Например. В шапке нашего скрипта будет код, который производит поиск по XML файлу нужной, уникальной, строки и если ее нет – добавляет ее (например это строка IP адреса пользователя и USER_AGENT). Так вот – пока этот скрипт отработает – пройдут секунды – зачем пользователю ждать это время, ведь ему нужно увидеть загруженный сайт сразу, ведь результат работы скрипта не повлияет на дальнейшую работы пользователя на сайте.

Есть несколько вариантов решения этого вопроса. Один из них – сокеты.

function RunAsynchronous($url, $options= array())
{
    $parts = parse_url($url);
     if (!$open = fsockopen($parts['host']))
    {
        return false;
    }
    $data = http_build_query($options, '', '&');
    fwrite($open, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
    fwrite($open, "Host: " . $parts['host'] . "\r\n");
    fwrite($open, "Content-Type: application/x-www-form-urlencoded\r\n");
    fwrite($open, "Content-Length: " . mb_strlen($data,"UTF-8") . "\r\n");
    fwrite($open, "Connection: Close\r\n\r\n");
    fwrite($open, $data);
    fclose($open);
    return true;
}

Пример использования:

RunAsynchronous('http://artkiev.com/asynchronous-script.php', array('time' => time()));

В asynchronous-script.php будет доступен $_POST['time']. т.к. в функции RunAsynchronous $options у нас массив, мы можем передавать сколько угодно параметров.


Другие публикации:



Написать комментарий через:

 
               
  • Локальный блог
  •  
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Возврат % от покупок
Статусы для соц.сетей на ArtKiev Design Studio