![]() |
|
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования. |
![]() |
|
Опции темы |
![]() |
|||||
![]() |
|
![]() |
#1 | |||
Реноме:
1662
|
PHP. Параллельные запросы
Исходные данные: VPS с 10-12 ядрами.
PHP код:
Задача. Нужно все 10 file_get_contents выполнить одновременно, сократив время в 10 раз. Вопрос. Как? |
|||
![]() |
![]() |
![]() |
#3 | |||
Реноме:
1662
|
Попробовал:
curl_multi_init(); curl_multi_exec(); curl_multi_close(); Время:1,68 сек. Прогресс есть, но всего в 2 раза быстрее. Маловато. добавлено через 29 минут Первый раз был удачней. Сейчас стабильно 2 секунды. Последний раз редактировалось Port_Artur; 08.04.2017 в 14:40. Причина: Добавлено сообщение |
|||
![]() |
![]() |
![]() |
#4 | |||
Реноме:
5368
|
Ненулевая вероятность, что это время параллельного отклика. На ваши запросы должен сформироваться ответ, идущий, к тому-же через защищенное соединение.
Можете вместо curl_multi сделать pcntl_fork несколько раз, получите параллельное исполнение в виде нескольких процессов. |
|||
![]() |
![]() |
![]() |
#5 | |||
Реноме:
1662
|
Шуранов, а как будет через pcntl_fork выглядеть вот этот пример:
PHP код:
Помогите пожалуйста. |
|||
![]() |
![]() |
![]() |
#8 | |||
Реноме:
6787
|
Мне когда такое понадобилось - просто сделал дополнительный скрипт-запускалку параллельных процессов. Вот такой примерно:
PHP код:
Он за доли секунды запускает сколько указать в цикле параллельных процессов. Последний раз редактировалось Vitaliy; 08.04.2017 в 20:17. |
|||
![]() |
![]() |
![]() |
#10 | |||
Реноме:
6787
|
А на счет сохранить - как вам надо так и сохраняете. Вариантов масса. Например, каждый поток может сохранять в свой файл. Чтобы названия файлов отличались можно вызывать эти потоки пронумеровано, например так: PHP код:
|
|||
![]() |
![]() |
![]() |
![]() |
|
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
|
|