За последние 24 часа нас посетили 54479 программистов и 1780 роботов. Сейчас ищут 895 программистов ...

CPU под PHP. А так же - может версию пхп обновить?

Тема в разделе "Беседы", создана пользователем mirosas, 11 мар 2017.

  1. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Так получается, что мне временами приходится выполнять ресурсоемкие вычисления на PHP. Я не профи, скорее дилетант, просто php чуть чуть знаю, и потому его и использую всюду и везде, в частности в перелопачивании огромных объемов текстовых данных. Кажется версия 5.6 у меня (не знаю, давно ставил).

    В последнее время бывает что немного ощущаю нехватку ресурсов. При том тормозит все - и жесткий диск,- я стал использовать gzcompress(json_encode($many_small_files_array)); - сохраняю десятки-сотни мелких файлов в один, чтобы процесс общения с диском занимал не часы, а десятки минут. Тормозит сам php - я так думаю это сборщик мусора включается через некоторое время работы - потому как через пару сек работы производительность резко падает. Но сборщик какой-то странный - мало того, что он затормаживает все раза в два, при том отказывается работать в отдельном потоке, на втором ядре процессора, так ещё и утечки есть и довольно большие, отсюда бывает что память php процесса минут через 10 работы вырастает до 1.5 гига (при том, что объем реально используемых данных около 50 метров не сказать что маленькими блоками).

    Есть мысли обновить ПК (не сегодня, но так, в будущем). Вот думаю.. как php реагирует на hyper threading? (если много процессов пускать). Так же с времен Core2 до последнего поколения процессоров производительность на такт выросла в 1.5 раза в синтетике и в играх (а в php с этим как? - тоже вырастет?).

    Если просто обновить php c 5.6 на что-то посвежее (совместимое), при этом не меняя код, то как вырастет производительность? Утечки памяти исчезнут? Будет ли сборщик мусора работать в отдельном потоке, нагружая другое ядро процессора?
     
    #1 mirosas, 11 мар 2017
    Последнее редактирование: 11 мар 2017
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Попробуй самую последованию

    Попробуй RAM Disk

    Нормально

    лучше переходи на Python или Go Lang
     
    mirosas нравится это.
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP 7 намного быстрее. CPU надо брать из расчёта производительности одного ядра, т.к. скрипт монопоточен.
     
    mirosas и denis01 нравится это.
  4. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Вот и интересно, что там с производительностью на ядро. Во всяких тестах задействующих новые наборы инструкций, новые процы раза так в 1.5 быстрее старых на 1 такт, но что-то есть у меня сомнения, что php что-то из этого использует.

    PHP 7 и правда быстрее? Хех.. скачать да поставить его что ли.. Блин.. я даже не знаю как я php5 ставил (на винду), работает как-то, но х.з. как. Сейчас если 7-й буду ставить - наверняка законфликтуют.

    Питон и Голэнг не хочу. Питон удобнее, для него библиотечки всякие хорошие есть, тот же Selenium Webdriver, но что-то подумал и решил что наверное нет. Во первых возня с переходом, во вторых не люблю строгую типизацию. Я заметил, что когда я делал первую работу на фрилансе я старался все делать красивенько по ООП, с правилами оформления кода, в какой-то IDE. А сейчас обхожусь Notepad++ и обычно ни одного класса в коде нет, и код отнюдь не красивый. Красивый кодинг не мое видимо... Поэтому PHP мне определенно предпочтительней. Хотя по назначению Питон лучше подходит, я все ж не сайтики делаю, а скрипты по обработке данных.

    Ram Disk пока точно не вариант)). Но за идею спасибо)). У меня оперативки меньше, чем иногда бывают объемы данных)), да и обычно мне надо чтобы данные гарантированно не исчезли через 3-5 часов, а иногда и через сутки. Может SSD поставлю.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    у тебя через cli работает PHP?
     
  6. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    cli, да. В 95% случаев я копирую файлики php.exe, php.ini, парочку dll-к в папочку с скриптами и запускаю скрипты из командной строки.
     
  7. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    В оставшихся 5% случаев я зачем-то запускаю пхп через апач, и там он идет модулем apache.

    При этом php у меня как-то хитро стоит в системе, потому как запуская из cli я могу прописать в php.ini (лежащем в одной папке c php.exe и скриптами) подгружаемые библиотечки, и они подгружаются откуда надо (все, кроме php5ts.dll и libssh2.dll - их тоже приходится копировать в папку с скриптами).

    В общем такой бардак, непонятно как работающий, что страшно его трогать))).

    И я пока не знаю как с https коннектами в php7. В php5 для этого нужно было пошаманить пару часов, но https библиотеки они для 5 и 7 скорее всего несовместимы.
    --- Добавлено ---
    Вообще у меня есть еще один жесткий диск, который уже 6-й год сыпется, все никак умереть не может. Я его для всяких тестов использую и сейчас там стоит 7-ка. Пожалуй на днях попробую туда 7-й пхп поставить и посмотреть как все встанет.)) Нормально встанет - поставлю на основной диск-пк).
     
    #7 mirosas, 11 мар 2017
    Последнее редактирование: 11 мар 2017
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В PHP есть встроенный веб-сервер, может он будет удобнее https://secure.php.net/manual/ru/features.commandline.webserver.php

    Можешь поставить open-server.ru сборку, там по идее CLI есть и все нужные библиотеки, можно выбрать 7 версию PHP.
     
    mirosas нравится это.
  9. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Удобнее тот сервер, который нормально использовать раз в год)). какой-нибудь маленький и незаметный)).

    В общем к текущему моменту поставил на тестовый диск 7-й php, apache и прикрутил их друг к другу через модуль. Работает и через апач, и через cli, но не всё.

    Даже через cli, как и с php5 было, не работают https коннекты вида: file_get_contents('https://api.vk.com/method/users.get.xml'). За 5 минут починить не удалось. Очень странно, что не пофиксили за столько версий то. Прошлый раз провозился часа два с этим, а может и больше.

    Прирост скорости порадовал. На тестовом скрипте из ниоткуда 2-х кратный рост скорости, и двухкратное сокращение потребления памяти. Еще больше порадовало отсутствие утечек памяти, что сократило требуемый объем для полного запуска с 1.5Гб до всего каких-то 300Мб.

    Пойду спать, а завтра попробую пофиксить https, как-то же в прошлый раз я эту проблему решил. Ежели получится за 15 минут управиться, и пройдет проверка совместисти с уже созданными скриптами, то поставлю на основной вместо 5-го.
     
    #9 mirosas, 11 мар 2017
    Последнее редактирование: 11 мар 2017
  10. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Все настроилось и работает, но есть "но"

    Всякие криворукие библиотеки либо ворнингами кидаются, либо вылетают по fatal error. PHPExcel вылетел по фатальной ошибке через минуту работы (ну мне он все равно не понравился из-за тормозов). Еще одна сторонняя библиотечка ворнингом стала кидаться (ну как бы пофиксил я ее).

    В общем не все так однозначно с php 7 ))). С одной стороны быстрее работают скрипты, а с другой чужие библиотеки использовать может оказаться затруднительным...

    А вообще хорошая штука)).
     
    #10 mirosas, 12 мар 2017
    Последнее редактирование: 12 мар 2017
  11. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Пока не все библиотеки обновились до php7,я работал с phpoffice под 5.6 потом перешел с ним на 7.1 и посыпались ошибки:

    Код (Text):
    1. Warning: Illegal string offset 'w:compatSetting' in C:\OpenServer\domains\phpword\vendor\phpoffice\phpword\src\PhpWord\Writer\Word2007\Part\Settings.php on line 173
    2.  
    3. Notice: Array to string conversion in C:\OpenServer\domains\phpword\vendor\phpoffice\phpword\src\PhpWord\Writer\Word2007\Part\Settings.php on line 173
    4.  
    5. Warning: Invalid argument supplied for foreach() in C:\OpenServer\domains\phpword\vendor\phpoffice\phpword\src\PhpWord\Writer\Word2007\Part\Settings.php on line 80
    Пришлось самому вносить правки
    https://github.com/PHPOffice/PHPWord/commit/000e36acfe9c8a8e039821bb583e4635e619fd53

    В некоторых других либах правок приходится вносить значительно больше)
    Так что какое то время еще нужно подождать,пока большинство либ будут полноценно поддерживать 7.x