Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2018, 11:39   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Перехват ошибок, которые идут в лог сервера

Здравствуйте.
Как в коде перехватывать всякие notice/warning, о которых я знаю, и на которые нужно положить болт try-catch ?
Суть в том, что мне необходимо увидеть эти ошибки один раз, учесть в коде, и что бы они потом не высыпались мне в лог. Я не могу их отловить, и это затрудняет обнаружение других не учтённых ошибок. Как их всё таки ловить ?
Например какой нибудь undefined offset, от которого, по хорошему, код должен перестать выполняться вообще.

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

В результате я соорудил вот такое вот творение:
Код:
function ValideNumber($number)
{
	$cond_nan=false;
	$cond_numeric=false;
	$cond_int=false;
	$cond_float=false;
	$cont_double=false;
	try { $cond_nan=is_nan($number); } catch (Exception $error) { $cond_nan=true; }
	try { $cond_numeric=is_numeric($number); } catch (Exception $error) { $cond_numeric=false; }
	try { $cond_int=is_int($number); } catch (Exception $error) { $cond_int=false; }
	try { $cond_float=is_float($number); } catch (Exception $error) { $cond_float=false; }
	try { $cont_double=is_double($number); } catch (Exception $error) { $cont_double=false; }
	return (!$cond_nan || $cond_numeric || $cond_int || $cond_float || $cont_double);
}
Входная строка предавирительно подготавливается (всякие trim, replace).
Но, апачу как разумеется плевать.
Мой следующий шаг - сделать посимвольный перебор с флагом и позицией наличия запятой, ну и так далее.

Как посоветуете быть ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 19.03.2018, 12:13   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Exceptions ?
ADSoft вне форума Ответить с цитированием
Старый 19.03.2018, 12:24   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Throwable > Exception
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2018, 13:04   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Мне уже осточертели эти супер умные супер функции, поэтому вот ...
Код:
function CheckFilter($filter_str,$number)
{
	$count_nums=strlen($number);
	if ($count_nums<1)
		return false;
	else;
	for ($i=0;$i<$count_nums;$i++)
		if (strpos($filter_str,$number[$i].'')===false)
			return false;
		else;
	return true;
}
function ValideNumber($number)
{
	if (!CheckFilter('.0123456789',$number))
		return false;
	else;
	if (!strpos($number,'-',1)===false)
		return false;
	else;
	$negative=($number[0]=='-');
	if ($negative && strlen($number)<2)
		return false;
	else;
	$point=strpos($number,'.');
	if (!$point===false)
		if ($negative)
			if ($point==0)
				return false;
			else;
		else;
	else;
	if ($point==count($number)-1)
		return false;
	else;
	return true;
}
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 19.03.2018 в 13:52.
OmegaBerkut вне форума Ответить с цитированием
Старый 19.03.2018, 13:12   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

http://php.net/manual/ru/filter.filters.validate.php
с флагом - FILTER_VALIDATE_FLOAT
ADSoft вне форума Ответить с цитированием
Старый 06.04.2018, 14:48   #6
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Какова цель этого? любопытно честно.. кстати почему nginx не узаете? скажем в связке с php-fpm? это к делу не относится я просто так интересуюсь.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 06.04.2018 в 14:50.
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчитать количество и сумму положительных и отрицательных чисел которые идут подряд Ascomos Microsoft Office Excel 3 01.03.2017 00:11
Делфи.Написать функцию нахождения максимальной длины подпоследовательности значений массива,которые идут подряд и не увеличиваются Jane_Air Помощь студентам 1 03.11.2013 11:54
Проанализировать лог файл сервера apache Katrina24 Помощь студентам 3 21.05.2012 22:15
в массиве А инвертировать те его части, которые идут по возрастанию (из C++ -> Pascal ) user10 Паскаль, Turbo Pascal, PascalABC.NET 0 16.04.2011 04:11
Как при запуске fpc.exe из консоли посмотреть лог ошибок компиляции? Cookson Паскаль, Turbo Pascal, PascalABC.NET 2 05.10.2010 18:33