LikeBK

Hadi

Некто
Сообщения
27
Реакции
0
Добрый вечер, форумчане, гуру программирования, а также просто залетные гости.

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

вынужден открыть свой, прошу не бить и не ругаться.

В чем суть проблемы:
Игра запускается на 5.4, но не работают некоторые моменты, например, подземка. Как я прочитал в выше указанном топике, игра должна работать на пхп 5.6. Ок отлично. Врубаем 5.6. и игра вырубается с ошибкой 500.

Смотрим логи: Call to undefined function mysql_connect() in /var/www/www-root/data/www/домен/_incl_data/class/__db_connect.php on line 54

Открываем данный файл и смотрим данную строчку:
$dbgo = mysql_connect('localhost','юзер','пароль');
mysql_select_db('база',$dbgo);
mysql_query('SET NAMES cp1251');

Документация говорит, что mysql_connect не работает более с пхп 5.5 и выше, а в 7 вообще удалена. Теперь это только mysqli
Перебиваю соединение и игра запускается. Конечно, ругается на другие файлы, их тоже перебиваю под mysqli и тут ошибок нет - все ок, но как будто теряется связь с базой, а именно:
1. например при просмотре инфы, такого персонажа не существует, хотя он есть однозначно.
2. при заходе существующим персом, логин такой-то не найден в базе, хотя также он есть однозначно
3. на странице регистрации кнопка Зарегистрироваться вообще не активна.

Прошу прощения за возможные грамматические ошибки

и крайне благодарен за любой ответ и помощь. с искренним уважением.

данные:
впс
сентос 7
исп менеджер

кто то говорит что надо какую то библиотеку подключать, чтобы работало
кто то говорит, что просто файлы в архиве не те, не от этой сборки.
 

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Ну как бы тебе помягче... Поэтому любые попытки переписать игру под более позднюю версию двигла это и есть адский труд. По своему опыту говорю.
У них отличаются API.
PHP:
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Привет, дорогой пользователь MySQL!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Привет, дорогой пользователь MySQL!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
Когда говорят, что устарело mysql_connect, подразумевается не одна эта функция, а она и все её дочерние функции:

MySQL — Функции СУБД MySQL
  • mysql_affected_rows — Возвращает число затронутых прошлой операцией рядов
  • mysql_client_encoding — Возвращает кодировку соединения
  • mysql_close — Закрывает соединение с сервером MySQL
  • mysql_connect — Открывает соединение с сервером MySQL
  • mysql_create_db — Создает базу данных MySQL
  • mysql_data_seek — Перемещает внутренний указатель в результате запроса
  • mysql_db_name — Возвращает название базы данных из вызова к mysql_list_dbs
  • mysql_db_query — Переключается на указанную базу данных и посылает запрос
  • mysql_drop_db — Уничтожает базу данных MySQL
  • mysql_errno — Возвращает численный код ошибки выполнения последней операции с MySQL
  • mysql_error — Возвращает текст ошибки последней операции с MySQL
  • mysql_escape_string — Экранирует строку для использования в mysql_query
  • mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба
  • mysql_fetch_assoc — Возвращает ряд результата запроса в качестве ассоциативного массива
  • mysql_fetch_field — Возвращает информацию о колонке из результата запроса в виде объекта
  • mysql_fetch_lengths — Возвращает длину каждого поля в результате
  • mysql_fetch_object — Обрабатывает ряд результата запроса и возвращает объект
  • mysql_fetch_row — Обрабатывает ряд результата запроса и возвращает массив с числовыми индексами
  • mysql_field_flags — Возвращает флаги, связанные с указанным полем результата запроса
  • mysql_field_len — Возвращает длину указанного поля
  • mysql_field_name — Возвращает название указанной колонки результата запроса
  • mysql_field_seek — Устанавливает внутренний указатель результата на переданное смещение поля
  • mysql_field_table — Возвращает название таблицы, которой принадлежит указанное поле
  • mysql_field_type — Возвращает тип указанного поля из результата запроса
  • mysql_free_result — Освобождает память от результата запроса
  • mysql_get_client_info — Возвращает данные о MySQL-клиенте
  • mysql_get_host_info — Возвращает информацию о соединении с MySQL
  • mysql_get_proto_info — Возвращает информацию о протоколе MySQL
  • mysql_get_server_info — Возвращает информацию о сервере MySQL
  • mysql_info — Возвращает информацию о последнем запросе
  • mysql_insert_id — Возвращает идентификатор, сгенерированный при последнем INSERT-запросе
  • mysql_list_dbs — Возвращает список баз данных, доступных на сервере
  • mysql_list_fields — Возвращает список колонок таблицы
  • mysql_list_processes — Возвращает список процессов MySQL
  • mysql_list_tables — Возвращает список таблиц базы данных MySQL
  • mysql_num_fields — Возвращает количество полей результата запроса
  • mysql_num_rows — Возвращает количество рядов результата запроса
  • mysql_pconnect — Устанавливает постоянное соединение с сервером MySQL
  • mysql_ping — Проверяет соединение с сервером и пересоединяется при необходимости
  • mysql_query — Посылает запрос MySQL
  • mysql_real_escape_string — Экранирует специальные символы в строках для использования в выражениях SQL
  • mysql_result — Возвращает данные результата запроса
  • mysql_select_db — Выбирает базу данных MySQL
  • mysql_set_charset — Устанавливает кодировку клиента
  • mysql_stat — Возвращает текущий статус сервера
  • mysql_tablename — Возвращает имя таблицы, содержащей указанное поле
  • mysql_thread_id — Возвращает идентификатор текущего потока
  • mysql_unbuffered_query — Посылает запрос MySQL без авто-обработки результата и его буферизации
Тебе нужно искать в коде все эти функции, заменять на mysqli аналоги и не забывать, что вызовы функций могут отличаться. У них может отличаться набор параметров или имя.
Банально, например функция mysql mysql_field_name() в mysqli называется не mysqli_field_name(), как ожидалось бы, а mysqli_fetch_field_direct(). И у них немного отличаются наборы параметров. И это далеко не единичный случай.
 

Hadi

Некто
Сообщения
27
Реакции
0
огромное спасибо! бесценный материал. буду изучать. прошу не удаляйте тему!
 

Hadi

Некто
Сообщения
27
Реакции
0
скорее всего нет литературы для чайников, где описаны какие функции на какие заменены. верно? или все-таки есть? подскажете ?
 

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Есть официальный сайт документации php.net.

А если бы ты попробовал походить по ссылкам в моём сообщении, ты бы увидел, что это ссылки на документацию, и там на каждой функции огромная красная блямба:
1601979862518.png

Но правильно, зачем по ссылкам ходить, да?
 

Hadi

Некто
Сообщения
27
Реакции
0
извините, я уже догадался, что если кликать, там материал. прошу прощения.
 

Invader

Знаток
👑
⚖️
📜
Сообщения
244
Реакции
105
Это библиотека mysql не установлена. надо ее на сервере установить видимо.
 

Hadi

Некто
Сообщения
27
Реакции
0
Это библиотека mysql не установлена. надо ее на сервере установить видимо.
возможно, но на 5.4 игра коннектиться на ура и войти можно , и зарегаться. на 5.6 беда. Если Вы скажете где это посмотреть, я с удовольствием покопаюсь , поучусь
 

Hadi

Некто
Сообщения
27
Реакции
0
Ну собственно, по ошибке 500, проблема решилась следующим образом - заходим в настройки пхп 5.6 и включаем библиотеку mysql. Спасибо İnsaallah
Invader и Bayer за лопату и направление куда копать. Благодарю искренне.

Есть просьба к форумчанам. Поделитесь файлом .htaccess от ЛайкБК. Буду крайне искренне и долго признателен.
Ибо данный файл от других сборок вызывает кучу ненужных редиректов, что выдает ошибку Апача.
 

PavelGomel

Некто
Сообщения
26
Реакции
0
Извините что в этой теме, но все же.

Может есть какой то файл, или кто то уже реализовал, читать все приваты, или это только через БД ?
 

Bayer

Специалист
⚖️
🏆
📜
Сообщения
688
Реакции
243
Извините что в этой теме, но все же.

Может есть какой то файл, или кто то уже реализовал, читать все приваты, или это только через БД ?
Таки, а в чем трабл?
Примерная реализация: select `text`, `login1`, `login2` from `chat` where `type` = 'private'
Извини, не знаю название строк. Но тебе нужно просто отправить запрос к таблице с нужными данными и вывести их.
 

PavelGomel

Некто
Сообщения
26
Реакции
0
Таки, а в чем трабл?
Примерная реализация: select `text`, `login1`, `login2` from `chat` where `type` = 'private'
Извини, не знаю название строк. Но тебе нужно просто отправить запрос к таблице с нужными данными и вывести их.
Спасибо, я просто думал может есть готовое решение, с различными вариантами, к примеру по логину, по клану, либо все в подряд.
 

Hadi

Некто
Сообщения
27
Реакции
0
Доброго вечера еще раз всем.
Понемногу вроде поддается изучению все это дело.

Хотелось бы спросить знающих.
Стоит проблема: в физах поединки летят на ура. без проблем вообще. Однако, в подземках любых бои начинают тормозить с откликом даже до 40 секунд. Логи ошибок не показывают, в консоле браузера чисто, что показывало - все устранил. и все равно - в обычных боях - без проблем, резвись на здоровье. как только в подземку вошел и начался бой, начинает думать долго. При том, что согласно логам никакий прямой нагрузки на процессор и память нет . Графа показывает ровно все как в бою, так и вне боя, но тем не мнее, что то тормозит бои в подезмках. Кто подскажет где искать проблему?
перерыл следующие файлы:
battle
battle_mini9
refresh
то есть, все куда ссылаются бои. просто потерял голову.
 

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
В соседней теме мы совсем недавно ездили по тормозам сервера.
 
Сверху