Перейти к содержимому


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


Обновление shopcms для работы на версии php 5.4 +

php5.4

Сообщений в теме: 65

#61 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 213 сообщений
Репутация: 54
Продвинутый

Отправлено 11 ноября 2017 - 10:28

Просмотр сообщенияbadisoft сказал:

Было бы здорово, если бы Вы писали ПОЧЕМУ так надо сделать.
Это все для исключения предупреждений совместимости функций / методов классов.
Дополнил предыдущий пост примером:
WARNING: Declaration of RussianPost::allow_shipping_to_address($_Address) should be compatible with ShippingRateCalculator::allow_shipping_to_address()
Line: 275
File: /core/modules/shipping/class.russianpost.php
Link: /index.php?order2_shipping=yes&shippingAddressID=1
Date: 11.11.17 - 10:20:07
Dump:
array (
  'order2_shipping' => 'yes',
  'shippingAddressID' => '1',
)


#62 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 213 сообщений
Репутация: 54
Продвинутый

Отправлено 11 ноября 2017 - 12:03

После отладки магазина под PHP 7.1 переключил его обратно на PHP 5.6.
Все работает, ошибок и предупреждений нет.
Т.е. скрипт магазина теперь отлажен под любую доступную современную версию PHP.
А теперь самое интересное. Я писал что не заметил ускорения скрипта под PHP 7.
Дело в том, что я сравнивал скорость работы на разных хостингах.

Оригинальный магазин работал под PHP 5.6 на своем родном хостинге, а эксперименты я проводил на хостинге, который считал аналогичным по производительности. И на этом экспериментальном хостинге я переключал MySQL->MySQLi и PHP 5.6 -> PHP 7.0/7.1. Вся работало достаточно медленно, при этом связка PHP5.6+MySQL всегда оказывалась самой быстрой.
Теперь же я попробовал результат этой работы (скрипт отлаженный под PHP 7) залить обратно на свой родной хостинг и был поражен...
Он стал вести себя совершенно по-другому.
Связка PHP 5.6+MySQLi оказалась немного быстрее чем PHP 5.6+MySQL, но после переключения на PHP7 магазин ускорился более чем в 2 раза!

Немного цифр.
На PHP5.6+MySQL категория с 10 товарами на странице пагинации, в среднем, после нескольких обновлений страницы генерировалась за 0.098сек.
На PHP5.6+MySQLi время осталось практически таким же: 0.096 - 0.105сек.
После переключения на PHP7.0 - 0.056 - 0.059сек
На PHP 7.1 уже ничего кардинально не изменилось - 0.041 - 0.055сек

На странице со всеми товарами ускорение оказалось еще значительнее.

#63 badisoft

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 5 071 сообщений
Репутация: 783
Мастер

Отправлено 12 ноября 2017 - 16:14

Цитата

но после переключения на PHP7 магазин ускорился более чем в 2 раза!
А что удивительного?
В PHP7 чуть ли не главное анонсируемое достижение это оптимизация и переписывание кучи кода, за счет чего он стал в среднем в 2+ раз быстрее.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#64 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 213 сообщений
Репутация: 54
Продвинутый

Отправлено 13 ноября 2017 - 03:14

Просмотр сообщенияbadisoft сказал:

Да бог с Вами, у меня давно есть версия ShopCMS на UTF8. Зачем тащить в светлое будущее проект на cp1251?
Чем перекодировали файлы и базу?
Базу, насколько я понимаю, нужно просто выгрузить и загрузить обратно?

#65 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 213 сообщений
Репутация: 54
Продвинутый

Отправлено 13 ноября 2017 - 04:18

С базой уже все получилось, спасибо, спасибо

#66 Salp

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 213 сообщений
Репутация: 54
Продвинутый

Отправлено 13 ноября 2017 - 20:20

Обнаружил критическую ошибку при входе в "Справочник заказов", по ссылке: /admin.php?dpt=custord&sub=new_orders
в custord_new_orders.php эта часть кода наталкивалась на ошибку т.к. $_GET["orderID"] был равен NULL и пришлось исправить:
//db_query( "update `".DB_PRFX."orders` set order_amount = ".$summa."-".$summa."*order_discount/100+shipping_cost where orderID=".(int)$_GET["orderID"]) or die($er = mysqli_error(DB::$link));
if($_GET["orderID"]) db_query( "update `".DB_PRFX."orders` set order_amount = ".$summa."-".$summa."*order_discount/100+shipping_cost where orderID=".(int)$_GET["orderID"]) or die($er = mysqli_error(DB::$link));
В результате при входе по этой ссылке новых заказов не показывает, список отбора заказов пуст.
Мне всегда было интересно, как оно раньше при входе по ссылке /admin.php?dpt=custord&sub=new_orders выдавало именно новые заказы?
------------------------
правильнее даже так:
if($_GET["orderID"]) {
$sql_itog = db_query( "select Price, Quantity from `".DB_PRFX."ordered_carts` where orderID=".(int)$_GET["orderID"] );
while($itog = db_fetch_row($sql_itog)) {
  $summa += $itog['Price']*$itog['Quantity'];
  }
if ( !isset($_GET["search"]) ) {
  db_query("update `".DB_PRFX."orders` set order_amount = ".$summa."-".$summa."*order_discount/100+shipping_cost where orderID=".(int)$_GET["orderID"]) or die($er = mysqli_error(DB::$link));
}
}