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


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

php5.4

  • Вы не можете ответить в тему
Сообщений в теме: 70

#61 Salp

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

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

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

Было бы здорово, если бы Вы писали ПОЧЕМУ так надо сделать.

Это все для исключения предупреждений совместимости функций / методов классов.
Дополнил предыдущий пост примером:
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',
)

  • 0

#62 Salp

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

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

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

После отладки магазина под 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сек

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

#63 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 November 2017 - 04:14 PM

но после переключения на PHP7 магазин ускорился более чем в 2 раза!

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

#64 Salp

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

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

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

Да бог с Вами, у меня давно есть версия ShopCMS на UTF8. Зачем тащить в светлое будущее проект на cp1251?

Чем перекодировали файлы и базу?
Базу, насколько я понимаю, нужно просто выгрузить и загрузить обратно?
  • 0

#65 Salp

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

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

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

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

#66 Salp

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

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

Отправлено 13 November 2017 - 08:20 PM

Обнаружил критическую ошибку при входе в "Справочник заказов", по ссылке: /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));
}
}

  • 0

#67 Salp

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

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

Отправлено 24 December 2018 - 12:25 AM

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

#68 Dbus

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

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

Отправлено 24 December 2018 - 12:53 AM

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


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

#69 Salp

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

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

Отправлено 24 December 2018 - 01:50 AM

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

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, как и любое обращение к базе, но при этом ошибки подключения нет.
  • 0

#70 R.Sergey

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

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

Отправлено 24 December 2018 - 11:49 AM

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

#71 Salp

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

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

Отправлено 24 December 2018 - 03:12 PM

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

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