Перейти к содержанию
nikifalex

[Решено {обновление курсов валют}] В админку не заходит

Рекомендуемые сообщения

Если вы вводите логин-пароль в админку, и все зависает, а потом может пишет 500, 504 или что-то еще.

То проблема связана с обновлением курсов валют через яху.

 

Открываем фафл

\admin\model\localisation\currency.php

 

находим там

	public function updateCurrencies($force = false) {
		if (extension_loaded('curl')) {
			$data = array();
			
			if ($force) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

и вставляем return;

	public function updateCurrencies($force = false) {
		return;
		if (extension_loaded('curl')) {
			$data = array();
			
			if ($force) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

Потом идем сюда и благодарим nikifalex за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, помогло. огромный вам респект, плюсануть не могу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чудесно! Проблема не у меня одного оказалось. Зашло в админку!

Но на 3х других сайтах на opencart (только верссии другие - админка работает)

Есть смысл поменять у них тоже?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет!!! Это затычка!!!!

 

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); //30 сек ожидания - подобрать по хостингу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И все равно это не совсем пожет помочь, потому что это нужно фиксить

После $content = curl_exec($curl);

Нужно убедиться, что результат все же есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 4); //4 сек ожидания - подобрать по хостингу.
curl_setopt($curl, CURLOPT_TIMEOUT,4);
			$content = curl_exec($curl);
			
			curl_close($curl);
if ($content) {			
			$lines = explode("\n", trim($content));
				
			foreach ($lines as $line) {
				$currency = utf8_substr($line, 4, 3);
				$value = utf8_substr($line, 11, 6);
				
				if ((float)$value) {
					$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'");
				}
			}
			
			$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
			
			$this->cache->delete('currency');
}

Вот так это должно быть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Затыкать можно как угодно, но проблема у яхи. Таймаут не виноват.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у яхи какие проблемы?

Сервер не отвечает - отвалится по таймауту

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

 

Весь день вчера промучился, подзадолбал хостера)

 

Кстати, на локальном сервере всё работало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы вводите логин-пароль в админку, и все зависает, а потом может пишет 500, 504 или что-то еще.

То проблема связана с обновлением курсов валют через яху.

...

Спасибо вам, автор. Все помогло, а то все сайты отвалились - ужас :?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На ocStore 1.5.1.3 код несколько другой, как менять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

какой другой? приведите тут его, т.к. такая древняя версия врядли у кого сохранилась

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

nikifalex,

СПАСИБО ТЕБЕ НЕРЕАЛЬНОЕ !!! 

Все так и было

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел, простите, у меня там просто не 

public function updateCurrencies($force = false) { 

а

public function updateCurrencies() { 

Добавил return - помогло!

 

Скажите, при этом автообновление валют продолжает работать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет конечно..

 

Поэтому я и писал что это "затычка"

 

А мое предложение народ игнорит, и не пробует, но оно работает!

 

Кроме того, если постараться, то можно вывести сообщение в админку - курсы не обновлены!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Добавил строки

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 4); //4 сек ожидания - подобрать по хостингу.
curl_setopt($curl, CURLOPT_TIMEOUT,4);

И автообновление сохраняется, я так понял. Кстати, помогло.

Изменено пользователем zorky

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если сервак отваливается по таймауту? и вы не можете зайти в админку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поставил

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); //4 сек ожидания - подобрать по хостингу.
curl_setopt($curl, CURLOPT_TIMEOUT,2);

Загружается довольно быстро. 2-3 секунды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы вводите логин-пароль в админку, и все зависает, а потом может пишет 500, 504 или что-то еще.

То проблема связана с обновлением курсов валют через яху.

 

Открываем фафл

\admin\model\localisation\currency.php

 

находим там

	public function updateCurrencies($force = false) {
		if (extension_loaded('curl')) {
			$data = array();
			
			if ($force) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

и вставляем return;

	public function updateCurrencies($force = false) {
		return;
		if (extension_loaded('curl')) {
			$data = array();
			
			if ($force) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

Потом идем сюда и благодарим nikifalex за помощь.

Огромное спасибо! Вчера столкнулся с данной проблемой, ваше решение очень помогло

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.