php GD на несколько ядер. Вопрос.

Тема в разделе "PHP", создана пользователем ZiX, 21 окт 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.387
    Симпатии:
    574
    Привет! Проблема вот какая... имеется vds ubuntu 14.04
    apache2
    nginx
    mysql
    всё как обычно.
    Стоит isp 5;
    Вопрос: Если просто тыкать по страницам, то загружаются почти равномерно все 3 ядра. Но если я например меняю размер картинки или режу с помощью php GD то работает только 1 ядро!
    Почему так? картинки 500кб - 10мб поэтому хотелось бы задействовать все ядра.
    Смотрел через htop.
    Есть у кого какие идеи? Заранее спасибо!
    вот так с GD
    2015-10-21 00-15-12 Скриншот экрана.png
     
    Последнее редактирование: 21 окт 2015
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.113
    Симпатии:
    2.130
    PHP умеет использовать только 1 поток/ядро...

    Ну вернее не совсем так, просто мы кодить не умеем: http://habrahabr.ru/post/148688/
     
  3. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.387
    Симпатии:
    574
    так загрузка страницы нормально делится по ядрам.... или я чтото не понял?
     
  4. Stesh

    Stesh

    Регистр.:
    3 фев 2009
    Сообщения:
    200
    Симпатии:
    70
    Отдельно взятые процессы раскидываются по ядрам. А в контексте одного процесса в распоряжении только логическое ядро.
     
  5. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.387
    Симпатии:
    574
    Есть какие-то костыли чтоб разбить процесс? не встречали?
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.113
    Симпатии:
    2.130
    Ты когда страницу 1 открываешь в 1 окно - будет 1 ядро... А вот за счёт AJAX и прочего - делится по ядрам...

    По костылям - я кинул ссылку...

    PHP - реально крутой язык. На нём можно делать офигенные вещи, просто мы сами себе рамку поставили - только генератор HTML... На деле - можно даже GUI-приложения делать ))) Ну и работа с процессами - тоже есть... Ничего не мешает отдать обработку дочерним процессам.
     
  7. metsys

    metsys

    Регистр.:
    27 апр 2014
    Сообщения:
    423
    Симпатии:
    408
    полагаю ответы на такие вопросы надо искать у разрабов модуля php GD и сорцах модуля php GD а также в их мейллистах, багтрекерах (если есть такие) итп
    многие рекомендуют перейти на другие обработчики изображений. в других есть явное задание multithreading при компилировании.
    ключ https://www.google.com/search?q=php+GD&ie=utf-8&oe=utf-8#q=php+GD+multithreading
     
    ZiX и Горбушка нравится это.
  8. Rumantic

    Rumantic Создатель

    Регистр.:
    23 апр 2012
    Сообщения:
    15
    Симпатии:
    5
    Если встал вопрос о разделении обработки картинок на разные ядра процессора, то видимо проект достиг такой точки, когда надо подумать об отдельном сервере для картинок. Сервер для картинок, сервер для БД.
     
  9. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.387
    Симпатии:
    574
    Тема закрыта! Решение найдено!
     
Статус темы:
Закрыта.