Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2017, 23:42   #1
vetalspb
Новичок
Джуниор
 
Регистрация: 29.03.2017
Сообщений: 4
По умолчанию Многопоточность, исполнение параллельных задач в скрипте

Есть проект, в котором по web сервису идут запросы к нескольким сайтам которые отдают результат.
Необходимо организовать многопоточность что бы Н количесство скриптов запускалось одновременно.
Сейчас они запускаются последовательно
include("./webser/1.php");
include("./webser/2.php");
............
include("./webser/.....php");
А надо что бы они исполнялись параллельно, и в случаи зависания они убивались, передавая об этом информацию. Что бы не подвешивать сайт. Каждому скрипту передается несколько параметров, номер запроса, строка поиска.
Сервер freebsd php apache
vetalspb вне форума Ответить с цитированием
Старый 30.03.2017, 09:03   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

pnctl и иже с ними
ADSoft вне форума Ответить с цитированием
Старый 30.03.2017, 11:01   #3
vetalspb
Новичок
Джуниор
 
Регистрация: 29.03.2017
Сообщений: 4
По умолчанию

забыл указать nginx у меня. А на нем не работает pnctl
vetalspb вне форума Ответить с цитированием
Старый 30.03.2017, 11:08   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Ну ищите библиотеки под nginx
а вообще под вашу задачу думаю отлично multi curl подойдет
ADSoft вне форума Ответить с цитированием
Старый 30.03.2017, 11:23   #5
vetalspb
Новичок
Джуниор
 
Регистрация: 29.03.2017
Сообщений: 4
По умолчанию

Вот так сделал. Но одно не понятно, как локальный скрипт запускать.

$urls = array(
'http://www.ya.ru/',
'./webser/1.php', // не получатся его так запустить
'http://test.ru/webser/2.php' //а так не получается передать параметры
);
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i]=curl_init($url);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1); //ничего в браузер не давать
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,10); //таймаут соединения
curl_multi_add_handle ($mh,$conn[$i]);
}
//Пока все соединения не отработают
do { curl_multi_exec($mh,$active); } while ($active);
//разбор полетов
for ($i = 0; $i < count($urls); $i++) {
//ответ сервера в переменную
$res[$i] = curl_multi_getcontent($conn[$i]);
curl_multi_remove_handle($mh, $conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
print_r($res);
vetalspb вне форума Ответить с цитированием
Старый 30.03.2017, 12:58   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

без комментариев.... вам нужны азы PHP
парметры передавать можно через get ...script.php?parametr1=1&parametr2 =2
ADSoft вне форума Ответить с цитированием
Старый 30.03.2017, 15:32   #7
vetalspb
Новичок
Джуниор
 
Регистрация: 29.03.2017
Сообщений: 4
По умолчанию

Добил, спасибо!
vetalspb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммы диагоналей матрицы, параллельных побочной(С++) anastasiyakrit Помощь студентам 3 15.11.2016 10:49
Помогите оформить мою теорию о пересекающихся параллельных прямых программно в Pascal Artchi Паскаль, Turbo Pascal, PascalABC.NET 12 05.07.2016 13:13
сортировка в параллельных потоках Dmitriy90 Помощь студентам 4 06.04.2012 21:16
Определение количества параллельных портов CyberGirl Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 10.01.2012 12:34
о параллельных вычислениях motorway PHP 4 20.09.2009 18:22