Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Параллелизация процессов в ПХП


Автор: animegirl 25.7.2011, 02:00
Есть ли возможность одновременно выслать запросы на разные MySQL, да так, что бы второй, не ждал пока придёт ответ от первого?
Код

<?
$server1 = mysql_connect("55.55.55.55","a","b");
$server2 = mysql_connect("66.66.66.66","c","d");

mysql_db_query("db1","SELECT ...",$server1);
mysql_db_query("db2","SELECT ...",$server2);

...somethink to do...
?>

Автор: CruorVult 25.7.2011, 11:25
http://www.ibm.com/developerworks/ru/library/os-php-multitask/index.html

Добавлено через 1 минуту и 47 секунд
либо через fsockopen

Код

function http_request($url, $params = null) {
    $data = "";
    if($params) {
        if(is_array($params))
            $data = http_build_query($params);    
        else
            $data = $params;    
    }        
    $parts = parse_url($url);        
    if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80))      
        return false;             
     
    fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
    fwrite($fp, "Host: " . $parts['host'] . "\r\n");
    fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
    fwrite($fp, "Cookie: " . $_SERVER["HTTP_COOKIE"] . "\r\n");
    fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
    fwrite($fp, "Connection: Close\r\n\r\n");
    fwrite($fp, $data);       
    fclose($fp);     
    return true;
}


Добавлено через 3 минуты и 12 секунд
З.Ы. Для профи вы погарячились smile 

Автор: solenko 25.7.2011, 14:10
CruorVult, вы предлагаете реалзовывать протокол mysql, или получать данне через еще один API слой? 

Автор: solenko 25.7.2011, 14:25
animegirl, посмотрите на mysqli_query c result_mode = MYSQLI_ASYNC

Автор: CruorVult 25.7.2011, 14:55
Цитата(solenko @  25.7.2011,  14:10 Найти цитируемый пост)
получать данне через еще один API слой


просто выполнять параллельно http запросы на сервис, передавая разные параметры(имя БД), время выполнения которых будет составлять максимальное  время взаимодействия с какой-то БД.

fsockopen скорее не подойдет для данного случая, т.к. нету возможности перехвата потока, лучше 1-й вариант.

Автор: solenko 25.7.2011, 15:16
http очень сложно назвать производительным решением. Лучше все-таки использовать стандартные средства, которые, благо, существуют.

Автор: CruorVult 25.7.2011, 15:22
ну в принципе согласен! Просто как-то не доводилось работать с MYSQLI_ASYNC

Автор: baldina 25.7.2011, 16:16
Цитата(animegirl @  25.7.2011,  02:00 Найти цитируемый пост)
Есть ли возможность одновременно выслать запросы на разные MySQL, да так, что бы второй, не ждал пока придёт ответ от первого?

можно вынести на клиента, используя параллельные ajax запросы

Автор: animegirl 25.7.2011, 16:44
Цитата(baldina @  25.7.2011,  16:16 Найти цитируемый пост)
можно вынести на клиента, используя параллельные ajax запросы

Нельзя, данные надо будет дальше обрабатывать, до передачи юзеру
solenko, а можно по подробней?  smile 

Автор: baldina 25.7.2011, 17:23
в манах пример. http://www.php.net/manual/en/mysqli.poll.php
структурно устроено как и в любых низкоуровневых реализациях асинхронных взаимодействий

Автор: Sentox 25.7.2011, 22:54
Цитата(animegirl @ 25.7.2011,  16:44)
Цитата(baldina @  25.7.2011,  16:16 Найти цитируемый пост)
можно вынести на клиента, используя параллельные ajax запросы

Нельзя, данные надо будет дальше обрабатывать, до передачи юзеру
solenko, а можно по подробней?  smile

В принципе как вариант используется для UC своей цепочкой обязанностей при передаче ajax - ом (это кстати довольно реализовывается легко (то есть юзверь получит те данные которые ему нужны), но есть один минус требуется упорядочивание ajax запросов по их приоритетам и создание алгоритма очереди с распределением и сбросами (благо на 30 % это уже в jquery сделано)) но это ИМХО извращение и дополнительная нагрузка на разработку архитектуры клиента.

Вопрос к другим участникам, если в требованиях - ограничениях нельзя использовать lite версию mysql?

Автор: animegirl 26.7.2011, 00:48
Цитата(Sentox @  25.7.2011,  22:54 Найти цитируемый пост)
В принципе как вариант используется для UC своей цепочкой обязанностей при передаче ajax - ом (это кстати довольно реализовывается легко (то есть юзверь получит те данные которые ему нужны), но есть один минус требуется упорядочивание ajax запросов по их приоритетам и создание алгоритма очереди с распределением и сбросами (благо на 30 % это уже в jquery сделано)) но это ИМХО извращение и дополнительная нагрузка на разработку архитектуры клиента.

Ещё раз: Аякс - нельзя.


Цитата(Sentox @  25.7.2011,  22:54 Найти цитируемый пост)
Вопрос к другим участникам, если в требованиях - ограничениях нельзя использовать lite версию mysql?

Версия самая обыкновенная

Автор: gcc 2.8.2011, 21:43
как вариант,может быть еще поможет PRADO:
http://www.xisc.com/
компонентный событийно-ориентированный инструмент для Web-программирования на PHP 5

Автор: makklovskiy 19.8.2011, 17:36
а мне что то эти примеры сомнительны...

Автор: animegirl 3.9.2011, 22:11
makklovskiy, Мои примеры или примеры решения?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)