Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
1

Остановка определённого метода

30.09.2013, 15:49. Просмотров 576. Ответов 7
Метки нет (Все метки)

В общем-то ситуация не супер, заставили писать аля "сервер на PHP для вебсокетов" (кто и зачем - не спрашивайте). Наваял пару класов под CLI - всё на самом деле получилось довольно красиво с ивентами и т.д. Но есть одно но - на сервер приходит определённая инфа, которую сервер переваривает и отправляет результат. Инфа в xml формате и её довольно много - всю проверить нет возможности, следовательно могут вылезать всякие ноутисы. Их вывод конечно отключен, но вместо результата мне нужно вернуть ошибку, мол вот тут дружок ты забыл кое что.

Отсюда вопрос, можно ли завершить выполнение определённой функции, но не всего процесса?

ТОбишь есть основной цикл while, который слушает сокет и при получении вызывает определённый метод, а тот следующий и так далее по цепочке, так вот можно ли при ерроре (кастомный еррор хэндл наваял) остановить выполнение данной цепочки и вернуться просто в while как-будто нечего не было...

P.S.
Я понимаю всю абсурдность ситуации и что лучше бы надо было писать на nodejs с использованием socket.io, но...

Добавлено через 7 минут
P.P.S

Вся соль в том, что после парсинга инфы оно автоматом отправляет результат на сервер, я же хочу предотвратить это и отправить эррор... Можно конечно ставить глобальную метку и передт отправкой ей проверять, но всё же может есть более красивый подход...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 15:49
Ответы с готовыми решениями:

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

Страница с объектами определённого пользователя
$users = check_user(); - Функция проверки залогился юзер или нет Вот код ...

Остановка php скрипта
Возникла следующая проблема: имеется некий пхп скрипт, который отрабатывает...

Интересует реализации определённого функционала на сайте
Здравствуйте уважаемые специалисты. Я человек в программирование не опытный,...

Принудительная остановка выполнения скрипта
Не знаю в какую тему писать так что пишу тут(не серчайте пожалуйста) В общем...

7
TAB
213 / 213 / 74
Регистрация: 12.03.2013
Сообщений: 485
01.10.2013, 09:04 2
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function B() {
   // ..
   if ( $badValue )
       throw Exception(/* бла-бла-бла */)
 
   return $result;
}
function A() {
    // ..
    B();
    // ..
    if ( $errorParsing )
        throw Exception(/* бла-бла-бла */)
 
   return $result;
}
PHP
1
2
3
4
5
6
7
8
9
require_once 'function/functions.php';
// ..
while ( TRUE ) {
    try {
        A();
    } catch (Exception $e) {
        // Обработка ошибки
    }
}
Более типизированные исключения.
0
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
04.10.2013, 10:31  [ТС] 3
Цитата Сообщение от TAB Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function B() {
   // ..
   if ( $badValue )
       throw Exception(/* бла-бла-бла */)
 
   return $result;
}
function A() {
    // ..
    B();
    // ..
    if ( $errorParsing )
        throw Exception(/* бла-бла-бла */)
 
   return $result;
}
PHP
1
2
3
4
5
6
7
8
9
require_once 'function/functions.php';
// ..
while ( TRUE ) {
    try {
        A();
    } catch (Exception $e) {
        // Обработка ошибки
    }
}
Более типизированные исключения.
Вся соль в том, что всё крутиться внутри класса. Тобишь new Server($ip, $port, $logs); и всё... Можно ли как-то весь класс разом врапнуть под ексепшен?
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16754 / 6645 / 864
Регистрация: 12.06.2012
Сообщений: 19,897
Завершенные тесты: 1
04.10.2013, 11:00 4
так вам же и привели такой пример..?
0
TAB
213 / 213 / 74
Регистрация: 12.03.2013
Сообщений: 485
04.10.2013, 11:26 5
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Server {
    // ..
 
    public function run() {
        do {
            try {
                // execute ..
            } catch (RuntimeException $e) {
                // Обработка ошибки
                // или
                // throw $e
            }
        } while ( TRUE );
    }
}
PHP
1
2
3
4
5
6
7
8
require_once 'server.php';
 
try {
    $server = new Server(/* .. */);
    $server->run();
} catch (Exception $e) {
        // Критическая ошибка
}
Тоже самое.
Разумеется чудес не бывает и придётся переписать участки с вероятным возникновением ошибок под исключения, описав какие-то свои (использовав SPL).
0
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
09.10.2013, 15:35  [ТС] 6
Цитата Сообщение от TAB Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Server {
    // ..
 
    public function run() {
        do {
            try {
                // execute ..
            } catch (RuntimeException $e) {
                // Обработка ошибки
                // или
                // throw $e
            }
        } while ( TRUE );
    }
}
PHP
1
2
3
4
5
6
7
8
require_once 'server.php';
 
try {
    $server = new Server(/* .. */);
    $server->run();
} catch (Exception $e) {
        // Критическая ошибка
}
Тоже самое.
Разумеется чудес не бывает и придётся переписать участки с вероятным возникновением ошибок под исключения, описав какие-то свои (использовав SPL).
ну так все равно $server->run(); остановится, а мне надо что бы он крутился дальше.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16754 / 6645 / 864
Регистрация: 12.06.2012
Сообщений: 19,897
Завершенные тесты: 1
09.10.2013, 17:36 7
PHP
1
2
3
4
function ... {
    ......
    return ;
}
PHP
1
2
3
4
function ... {
    ......
    return NULL;
}
?
0
TAB
213 / 213 / 74
Регистрация: 12.03.2013
Сообщений: 485
10.10.2013, 13:14 8
PHP
1
2
3
set_time_limit(0);
// or
ini_set('max_execution_time', 0);
0
10.10.2013, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 13:14

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

Метода Симпсона для вычисления определённого интеграла
Помогите плиз срочно нужно: \int_{0}^{1}\frac{1-x}{1+x}dx , h=2;4;8

Остановка метода пока не произойдёт событие
Надо остановить выполнение метода пока не произойдёт событие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru