За последние 24 часа нас посетили 18859 программистов и 1621 робот. Сейчас ищут 915 программистов ...

Оптимизация PHP кода

Тема в разделе "Прочие вопросы по PHP", создана пользователем g200, 8 май 2014.

  1. g200

    g200 Новичок

    С нами с:
    16 дек 2013
    Сообщения:
    25
    Симпатии:
    0
    Я уже задавал подобный вопрос, ток вразумительного ответа так и не получил. Мне нужно оптимизировать очень большой скрипт на предмет уменьшения занимаемой памяти в процессе исполнения и нагрузки на процессор (баз данных нет).

    Подскажите пожалуйста как и где можно посмотреть разницу в потреблении ресурсов сервера того или иного PHP кода. Цель не уменьшить "вес" файла, а как можно больше уменьшить "потребление" сервера.

    Вот интересно посмотреть, что меньше будет грузить сервер, то что было или то что стало (в примерах ниже).

    Спасибо за ответы)

    Код (Text):
    1. //Пример 1,
    2.  
    3. //Было:
    4.  
    5. $str_ireplace = str_replace("Ä","a",$input);
    6.  
    7. $str_ireplace = str_ireplace("â","a",$str_ireplace);
    8.  
    9. $str_ireplace = trim($str_ireplace);
    10.  
    11. $str_ireplace = strip_tags($str_ireplace);
    12.  
    13. //Сделал:
    14.  
    15. $str_ireplace = strip_tags(trim(str_ireplace("â","a",(str_replace("Ä","a",$input)))));
    16.  
    17. //Пример 2,
    18.  
    19. //Было:
    20.  
    21. if(file_exists($file_name)) {
    22.  
    23. unlink($file_name);
    24.  
    25. }
    26.  
    27. $fopen = fopen($file_name,"wb+");
    28.  
    29. fwrite($fopen,$input_data);
    30.  
    31. fflush($fopen);
    32.  
    33. fclose($fopen);
    34.  
    35. //Сделал:
    36.  
    37. function SaveFile($file_name,$input_data) {
    38.  
    39. if(is_file($file_name)) {
    40.  
    41. unlink($file_name);
    42.  
    43. }
    44.  
    45. file_put_contents($file_name,$input_data);
    46.  
    47. }
    48.  
    49. SaveFile($file_name,$input_data);
    50.  
    51. unset($file_name,$input_data);
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    посмотри функцию memory_get_usage
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну явно не перестановкой команд в строчках )
     
  4. g200

    g200 Новичок

    С нами с:
    16 дек 2013
    Сообщения:
    25
    Симпатии:
    0
    а как ? подскажите

    Добавлено спустя 29 секунд:
    Спасибо, не знал. А как насчет процессора ?
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    процессор можно оценить косвенно через то число ответов от сервера, которое он выдаёт за единицу времени при максимальной загрузке.

    Я вообщ ене вижу смысла оптимизировать то, что вы написали. с чего вы взяли, что у вас с эти проблемы?
     
  6. g200

    g200 Новичок

    С нами с:
    16 дек 2013
    Сообщения:
    25
    Симпатии:
    0
    Скрипт превышает допустимую нагрузку по ресурсоемкости (цитирую хостера) и нужно ее уменьшить, вот и ломаю голову как это сделать) То что я написал это лишь пример. Сам код весит 7,6 МБ, его сюда постить не буду)
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    1. хостер врёт
    2. ты не на то думаешь. профилируй.

    ЗЫ: что за ебаный скрипт такой на семь мегабайт кода. я за несколько лет написал раза в три меньше.
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    перебирает все буквы всех алфавитов мира, что то типа:

    Код (Text):
    1. if ($word === 'a') { echo 'this A!'; }
    2. else if ($word === 'b') { echo 'this B!'; }
     
  9. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Рефакторинг нужен вам.
    Искать скорость меняя команды местами - хреновый способ что-то ускорить. Разберите код по полочкам, разделите на составные части, уже будет проще, чем искать косяки в 7мб кода. Затем смотрите куда и в каком месте утекает память, где узкое горлышко которое тормозит выполнение всего остального, ну и соответственно делайте выводы / меняйте алгоритмы / кэшируйте и т.д. и т.п.

    Альтернативный вариант - взять хостинг подороже )
     
  10. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Вот и уточни у своего хостера, чем конкретно он не доволен, загрузкой ЦП или оперативы. Так же не помешало бы узнать какие у него лимиты. Я вообще не понимаю что за культ хостера такой. Переехать можно за один день. Возможно тебе просто намекают на смену тарифа?
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я уже предлагал взять хоть просто платник. Он на фрихостинге сидит и думает, что хостер честно говорит про какие-то там превышения.
     
  12. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    У меня есть одна хрень на бесплатном тарифе hostinger.ru уже года два с лишним - ничего пока не писали про превышения чего-либо :) Но у меня там и правда нагрузок нет. В день запросов 50-200, ну в редких случаях штук 500 может быть. А скрипты все самописные и довольно простые.
    Но даже когда я там опубликовал свой PHP-скрипт подсветки исходников с демкой и выложил тут и желающие пошли тестить, вставляя порой довольно тяжёлые исходники и раскраска длилась долго (порой даже более 30 сек и скрипт вылетал по таймауту) - всё равно ничего они мне не сказали... )
     
  13. g200

    g200 Новичок

    С нами с:
    16 дек 2013
    Сообщения:
    25
    Симпатии:
    0
    Они все сделают чтобы вы купили у них платник, поэтому молчат)

    Добавлено спустя 26 секунд:
    Меня друг попросил облегчить, человеком поставлена задача переделать, и все тут) Размер 7MB занимает расчет траектории движения Земли по орбите + прочие астрономические параметры с последующим рисованием графика
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    почему так много?

    Добавлено спустя 16 секунд:
    короче дай скрипт уже людям, а то беспредметный разговор.