Сервер не отвечает на запросы.
#1

Доброго времени суток, коллеги. У меня возникла проблема:
В какой-то момент сервер просто перестает отвечать и после таймаута у клиентов начинаются попытки "реконнектнуться", но после реконнекта в лог идет только Incomming connection. А следующего за ним [Join] .... joined the server нет. Вот выдержка из лога
Код:
.........................................
[15:25:29] [chat] [Federico_De_Bazques]: У меня голова болит
[15:25:29] [chat] [Raul_Castillo]: 1000$
[15:25:29] [chat] [Dmitriy_Mironov]: ****
[15:25:30] Incoming connection: 217.118.64.33:60323
[15:25:30] [join] Daichi_Hattori has joined the server (101:217.118.64.33)
[15:25:30] Reconnect IP: 217.118.64.33 = 217.118.64.33, Time: 4
[15:25:36] Incoming connection: 217.118.64.33:60359
[15:25:47] Incoming connection: 217.118.83.197:45929
[15:25:56] Incoming connection: 217.118.64.33:60441
[15:25:58] Incoming connection: 95.220.153.71:60749
.....................................
Хостинг: MyArena (не реклама)

Спасибо.
Reply
#2

Бесконечный цикл?
Reply
#3

jhonyxakep, Спасибо. В англоязычной части форума мне то же самое сказали. Пересмотрел весь мод. Вероятность зацикливания не нашел. И даже там, где теоретически могло произойти зацикливание, произошел бы выход из паблика, т.к. счетчик я использую в индексе массива. В циклах do...while нашел вероятность зацикливания mysql_num_rows() если возвратит < 0, но судя по описанию плагина такая ситуация невозможна. Возможен ли какой-нибудь другой вариант?

P.S. возможно ли тут зацикливание?
PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    
strreplace(inputtext'%''#');
    return 
1;
}
stock strreplace(string[], findreplace)
{
    for(new 
istring[i]; i++)
    {        
        if(
string[i] == find)
        {
            
string[i] = replace;
        }
    }

Думаю, что возможно если каким-то образом клиент уберет EOS? Хотя если i выходит за пределы массива, то происходит выход из паблика. Но размер массива тут не указан.
Reply
#4

Тут возможно обращение в несуществующую ячейку массива.
На счет EOS, это сугубо внутрискриптовое и убрать его из конца строки можно только скриптово. Но я бы добавил сравнение с константой, а не просто [I]string.
Reply
#5

Stepashka, спасибо. Возможно так:
PHP код:
for(new i=0string[i] != EOSi++)
{
    if(
string[i] == find)
    {
        
string[i] = replace;
    }

У меня просто EOS всегда вызывает опасение, что его может не быть в строке. И еще такой вопрос, размер массива inputtext нигде не указан, как же узнать его максимальный индекс?
Reply
#6

Quote:
Originally Posted by Sanbody
Посмотреть сообщение
У меня просто EOS всегда вызывает опасение, что его может не быть в строке.
Такое может быть только если ты сам его удалишь.
Quote:
Originally Posted by Sanbody
Посмотреть сообщение
И еще такой вопрос, размер массива inputtext нигде не указан, как же узнать его максимальный индекс?
strlen.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)