Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как правильно запускать функцию? [2]
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
gheka пишет:
Но если вы внимательно смотрели примеры то у меня и написано с использованием mysqli
А, точно. Простите, сагрился на пример DeepVarvar'а.
Для mysqli доступны штатные методы по работе с транзакцией, примеры посмотрите: http://php.net/manual/en/mysqli.commit.php
gheka пишет:
А переделывать это целая история, так как у меня скрипт в 200-300 файлов
И что? Все гвоздями прибиты к myisam?
Разделение в mysql подключаемых стораджей вообще удивительнейшая идея для субд, из-за которой архитектурно появляется куча костылей и многое работает крайне странно. Но переезд с myisam на innodb проходит обычно тихо и спокойно, особенно если специально не пытались отстрелить себе ногу. И позволяет обойти огромнейшее число граблей в поддержке и производительности.
Лично перетаскивал небольшой проект в ~50к строк PHP-кода (если в файлах считать - чуть меньше 500) с myisam на innodb - модификации кода не потребовалось. Вот обратно - да, будет больно. Но зачем?
----- PostgreSQL DBA
Sail
Отправлено: 25 Апреля, 2015 - 12:15:06
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
gheka, Вы уверены, что в таблице заказов (order) поле id однозначно указывает именно на идентификатор счёта (invoices), а не заказа?
Логично предположить, что в таблице order есть поле с названием, похожим на `id_invoice`... или ещё какая-нить связь между заказом и счётом...
DeepVarvar
Отправлено: 25 Апреля, 2015 - 12:35:32
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Мелкий пишет:
То что это работает, не означает, что так можно делать
Ой-ли? А как насчет автолоада? Сначала происходит вызов, а потом подтягивается и интерпретируется функционал ))
Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011
Помог: 2 раз(а)
Sail пишет:
gheka, Вы уверены, что в таблице заказов (order) поле id однозначно указывает именно на идентификатор счёта (invoices), а не заказа?
Логично предположить, что в таблице order есть поле с названием, похожим на `id_invoice`... или ещё какая-нить связь между заказом и счётом...
Да нет в таблице ORDER есть естественно свой ID это просто чисто пример, и переменные придуманы от балды.
И что? Все гвоздями прибиты к myisam?
Разделение в mysql подключаемых стораджей вообще удивительнейшая идея для субд, из-за которой архитектурно появляется куча костылей и многое работает крайне странно. Но переезд с myisam на innodb проходит обычно тихо и спокойно, особенно если специально не пытались отстрелить себе ногу. И позволяет обойти огромнейшее число граблей в поддержке и производительности.
Лично перетаскивал небольшой проект в ~50к строк PHP-кода (если в файлах считать - чуть меньше 500) с myisam на innodb - модификации кода не потребовалось. Вот обратно - да, будет больно. Но зачем?
Да нет, переделать таблицу из MYISAM в INNOBD это думаю не составит труда. Другое дело перейти на PDO так как давно использовал просто MYSQL и не давно только перешёл на MYSQLI весь скрипт перелопатил. Надо было сразу PDO смотреть, просто не привычный стиль и много чего уже не помню из него. Но почитав про PDO выходит, что он не намного отличается от MYSQLI но всё же больше развития происходит с ним. Так что буду подумаю о переходе на PDO
dcc0
Отправлено: 25 Апреля, 2015 - 13:22:35
Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
DeepVarvar, разбор все равно должен происходить построчно - читай последовательно.
А так получается, если вызов в начале, на первых стадиях разбора найден вызов, функции, а потом через нн-ое число строк найдено само тело функции... Не порядок.
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
dcc0 сначала разбирается ВЕСЬ файл (ну или куча склееных инклюд), а уже потом идет рантайм выполнение.
В js, кстати, то же самое.
Естессно нет никакой нужды имплементировать "рутины" до их вызова, это тебе не си.
Да и в сях можно сначала только задекларировать, а потом в самом низу имплементировать.
"На первой стадии, сканировании, лексический анализатор обычно реализуется в виде конечного автомата, определяемого регулярными выражениями..."
Сканирование все равно последовательно.
"Во многих случаях первый непробельный символ может использоваться для определения типа следующего токена, после чего входные символы обрабатываются один за другим пока не встретится символ, не входящий во множество допустимых символов для данного токена. В некоторых языках правила разбора лексем несколько более сложные и требуют возвратов назад по читаемой последовательности..."
И вот вопрос влияет ли или не влияет вызов в начале на скорость разбора?
Так как по идее больше ни на что влиять не должен.
Подождем Мелкого.
----- Март 2021. Бросил программирование
DeepVarvar
Отправлено: 25 Апреля, 2015 - 14:23:25
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Call to undefined function (Добавление)
В принципе в документации есть противоречие между утверждением и вот этим примером:
Так как в нем bar вызывается ровно так же, как это у автора.
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
DeepVarvar, но большинство вопросов, с которыми приходят люди, недалеки от этого и ошибки обычно ... не буду примеры приводить.
Неужели ты не делал ошибок, над которыми смеялся потом?
Но это ладно, вопрос человеческого фактора. И да, факт - утверждение, как надо вызывать функции и пример вызова из официальной документации ОДНОЗНАЧНО ПРОТИВОРЕЧАТ.
Так что не одни пользователи php виноваты в таком количестве непонятного кода.
Второй вопрос - обращения к памяти на низком уровне, если вызов в начале, а функция на 900-ой строке. Как и на что влияет?! Вопрос, имхо, открыт.
Тема работы транслятора (компилятора и интерпретатора) не раскрыта.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
dcc0 пишет:
Ждем товарища Мелкого.
А я думаю, пилю и сверлю. Хм, надо перечитать понаписанное.
DeepVarvar пишет:
А как насчет автолоада? Сначала происходит вызов, а потом подтягивается и интерпретируется функционал ))
Принято. Это рантайм. Сейчас, по крайней мере.
dcc0 пишет:
Второй вопрос - обращения к памяти на низком уровне, если вызов в начале, а функция на 900-ой строке. Как и на что влияет?!
До размещения в памяти ещё гулять и гулять по абстракциям. JIT только в PHP7, для начала опкоды.
dcc0 пишет:
И вот вопрос влияет ли или не влияет вызов в начале на скорость разбора?
Не влияет, т.к. PHP интерпретатор компилирующего типа. Сначала весь файл целиком компилируется в опкод, затем исполняется. Если вызывает include - то компилирует его и исполняет.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.