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


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

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


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

php5.4

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

#61 Salp

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

  • Assistent vsupport.ru
  • PipPipPip
  • 216 сообщений
Репутация: 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
  • 216 сообщений
Репутация: 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 074 сообщений
Репутация: 786
Мастер

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

Цитата

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

#64 Salp

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

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

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

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

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

#65 Salp

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

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

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

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

#66 Salp

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

  • Assistent vsupport.ru
  • PipPipPip
  • 216 сообщений
Репутация: 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));
}
}


#67 Salp

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

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

Отправлено 24 декабря 2018 - 00:25

У меня проблема. Хостер обновил сервера и теперь в качестве БД используется MariaDB 10.2 - это аналог MySQL 5.7 (до этого было MySQL 5.6).
В результате все сайты на ShopCMS перестали работать - выдает или 500 или Internal Server Error, что абсолютно неинформативно и не никак не помогает исправить ситуацию (((((((((((((((

#68 Dbus

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

  • Assistent vsupport.ru
  • PipPipPip
  • 1 111 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 24 декабря 2018 - 00:53

Просмотр сообщенияSalp (24 декабря 2018 - 00:25) писал:

У меня проблема. Хостер обновил сервера и теперь в качестве БД используется MariaDB 10.2 - это аналог MySQL 5.7 (до этого было MySQL 5.6).
В результате все сайты на ShopCMS перестали работать - выдает или 500 или Internal Server Error, что абсолютно неинформативно и не никак не помогает исправить ситуацию (((((((((((((((

ну а логи зачем?
502 Bad Gateway

#69 Salp

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

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

Отправлено 24 декабря 2018 - 01:50

Были бы логи, выложил бы. В логах пусто (((

class DB
{
	static $link;
	static $count = 0;
  
	public static function connect($host,$user,$pass,$db) {
		@self::$link = mysqli_connect($host,$user,$pass,$db) or die('No connect (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
		mysqli_set_charset(self::$link, DEFAULT_CHARSET);
	}
public static function escape($data)  
	{
		if(is_array($data))
			$data = array_map('self::escape', $data);
		else			
			$data = mysqli_real_escape_string(self::$link, $data);
		return $data;
	}
...........................
mysqli_real_escape_string(self::$link, $data); уже выдает ошибку 500, как и любое обращение к базе, но при этом ошибки подключения нет.

#70 R.Sergey

    Администратор

  • Администраторы
  • 2 784 сообщений
Репутация: 330
Мастер

Отправлено 24 декабря 2018 - 11:49

Очень интересно.
Скинь в личку доступы к фтп, попробую помочь, если еще не решил проблему.

#71 Salp

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

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

Отправлено 24 декабря 2018 - 15:12

Просмотр сообщенияR.Sergey (24 декабря 2018 - 11:49) писал:

Очень интересно.
Скинь в личку доступы к фтп, попробую помочь, если еще не решил проблему.
Проблему временно решил возвратом на PHP 5.6, при этом остался 10.2.19-MariaDB-log-cll-lve - MariaDB Server (аналог MySQL 5.7) и все работает!
Сейчас регистрирую тестовый аккаунт на этом сервере - буду на нем пытаться вернуть скрипт на PHP7.1