|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Добрый день! Нарвались на неприятный критический глюк https://bugs.php.net/bug.php?id=73021 Это только мы что-то неправильно делаем, или не первые? Вот еще: https://bugs.php.net/bug.php?id=72583 В mysqlnd все нормально. Неужели придется вернутся к ibase_ ? Скоро дедлайн. PDO нравится больше. Вижу драйвер написал Adrian Marius Popa (Mariuz) который комитит еще и в Firebird Project. Но он пока молчит на все попытки связыватся с ним. Может Firebird девы? Код драйвера вроди простой, несколько строк кода, но я в С++ не очень. https://github.com/php/php-src/tree/master/ext/pdo_firebird Может там одну строку только подправить... ;) Помогите! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 09:30 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, вообще в PDO для firebird глюков полно, драйвер весьма сырой и даже в PHP он до сих пор лишь экспериментальный. Помнится там ещё были проблемы с NULL индикаторами и предложением RETURNING. А некоторые фичи доступные для других СУБД до сих пор не реализованы. Увы и ах большинство современных фрейворков работают именно с PDO и ibase_ функции прикрутить туда весьма проблематично. По поводу исправления бага это нужен человек которые привык работать с Firebird API на С++ вроде Дмитрия Сибирякова. Сам несколько раз смотрел код драйвера, заметил там несколько подозрительных мест, но полностью не уверен в своих догадках. Всё таки для того чтобы разобраться что там к чему нужно время. З.Ы. Собираюсь скоро выпустить статью о интеграции Firebird в фреймворк Laravel. Там тоже используется PDO. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 09:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Дмитрий Сибиряков, помогите сообществу которую продвигает Firebird в браузерах! Давайте уничтожим легенду что Firebird на вебе плохой, тормозной и глючный :) Если надо, скинусь на несколько часов работы, честно... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 11:29 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Лучше попытайтесь уничтожить легенду, что все уэб-программисты - днище криворукое, ни на что толковое без готовых фреймворков не годное. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 12:13 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Работаем и в это направление, есть чем гордится. Вот только драйверы сырые, с чем собственно и обращались... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 12:45 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, фреймворки тут не причём бага в драйвере ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 12:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociВот только драйверы сырые, с чем собственно и обращались... Так этим и подтверждаешь легенду, что выйти за пределы фреймворка и ПыхПыха в целом для вас - полный анрил. Даже глупые дельфины время от времени способны поправить баги в библиотеках... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 12:58 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисбага в драйвере Ты ещё скажи "в ДНК"... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:01 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДаже глупые дельфины время от времени способны поправить баги в библиотеках... ты не сравнивай библиотеки доступа в Дельфи и PDO драйвер пыха. Дельфийские библиотеки написаны на самой дельфе и разобраться там проще. PDO написана на C++, т.е. человек владеющий только PHP это сделать не способен. Там нужно разбираться в Firebird API и внутренней кухне PHP одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:06 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисчеловек владеющий только PHP это сделать не способен Ну так легенда, о которой я говорил, именно так и гласит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:12 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДаже глупые дельфины время от времени способны поправить баги в библиотеках... Дмитрий, я большенство времени в Делфя и работаю. Да, правили там много либов, FibPlus, EhLib. Отправил фиксы авторам. Но здесь код драйвера в С++, и FB API, как и сказал выше. Ладно, чет вы сегодня с сарказмом и злой. Нет так нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:13 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociНо здесь код драйвера в С++, и FB API, как и сказал выше. И? С++ не слишком отличается от Дельфи (а если уж на то пошло, то и от PHP), а FB API - обычное API на функциях (синтаксис вызова которых совершено одинаков во всех языках) и хэндлах. Что именно делает их невозможными для понимания? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:28 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociЛадно, чет вы сегодня с сарказмом и злой.Это его нормальное состояние)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:45 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Ура! Вопрос снят. Пересел проэкт на PHP7.10 (из Debian Testing) и глюка нету. Может что-то правили с 5.6.24, но факт что работает. Короче заинтриговали. В отпуск буду ставить себе студию и компилить пых пых... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, кстати да. Я тоже заметил что 7 работает корректней ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 14:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
вот только у меня подозрения, что эти баги никто не исправлял в PDO Firebird, а сам ПХП их просто аккуратно прячет под ковёр ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 14:24 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис, Может быть глюк был на уровне PDO, а не в сам драйвер FB... cмотрел чендж лог, ничего подобного не нашел. Или менеджер памяти движка, так как в 7-ой версии переписали кучу кода. Глюк был только при больших строк (100kb). Даже не знаю что думать, рад что исчез :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 14:32 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociГлюк был только при больших строк (100kb). Firebird в принципе не может работать со строками длиннее 32к-3 байт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 15:32 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, речь о BLOB SUB_TYPE TEXT ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 15:37 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисречь о BLOB SUB_TYPE TEXT Если кто-то по мускулистой привычке пытался собирать текст запроса со значениями, а не параметрами, то это клиника и уже не лечится. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 15:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ты не понимаешь о чём речь. Дело не в сборки запроса вместо параметра. Проблема в самой передачи параметру длинной строки. Хоть бы почитал содержание приведённых багов. На самом деле PDO поддерживает два варианта подготовленных запросов: 1. Эмуляцию (для СУБД которые не поддерживают нативно. Привет привычкам мускуля) 2. Настоящие подготовленные запросы Вроде бы для Firebird в PDO по умолчанию используются нативные подготовленные запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 16:05 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисдля Firebird в PDO по умолчанию используются нативные подготовленные запросы. Так и есть, никакой эмуляции. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 16:48 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисХоть бы почитал содержание приведённых багов. Почитал. Мнение не изменилось. Апача ставить, пыхпых ставить, PDO и драйвер к нему из исходников собирать, потом ещё разбираться как это всё друг с другом связать, чтобы оно хотя бы попыталось заработать. Потом ловить крэш отладчиком, смотреть стэк. С вероятностью 90% в процессе нарвёшься на совсем другой баг или проблему собственно сборки. Дня два дурной работы и ради чего? Возможное продвижение Firebird в изначально сомнительную нишу без всякого полезного выхлопа? Бесперспективняк. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 16:58 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну тебя же никто не заставляет. Да геморрой там порядочный. Ко всему этому надо ещё понимать потроха пыха. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 17:24 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисДа геморрой там порядочный. Ты его недооцениваешь. ИМНИП, там ещё и собирать надо компилятором исключительно православной версии, иначе оно работать откажется без объяснения причин. У разработчиков пых-пыха очень сильные тараканы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 17:28 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВозможное продвижение Firebird в изначально сомнительную нишу без всякого полезного выхлопа? Бесперспективняк. Зря вы это говорите. Хотим мы или нет, но веб проэкты все больше вытисняют десктопные. И тренд неутишительный. В Штатах уже практически все бизнес приложения в облаке, а фэйс юзеров на хтмл. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 19:33 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Оказывается все-таки глюк есть, проверял 100 раз :( https://bugs.php.net/bug.php?id=73087 Проявляется при следующем запросе, если в предыдущем был блоб параметр с utf8 текстом. Примите на заметку и запасаемся надеждой что кто-то исправит... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2016, 11:11 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Ура, Товарищи! Мой фикс с блоб параметрами был принят в мэйнстрим: https://github.com/php/php-src/pull/2183 Заодно фиксил ставка NULLов если такие передаются. Раньше переобразовались в пустую строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 10:21 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, молодец! Спасибо. Если есть возможность посмотри почему PDO не работает с INSERT ... RETURNING в 3.0. В 2.5 всё отрабатывает без ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 10:49 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис, Ок, проверю. Если надо будет помощь по внутреннестями API птички, будьте рядом. Еще на очереди этот глюк https://bugs.php.net/bug.php?id=65689 Не вызывается isc_dsql_free_statement в PDO->exec() и кушается память на стороне Firebird-a. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 10:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
а этот баг тоже считается? я столкнулся с необходимостью следить Код: php 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 10:59 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Krapotkin, Это только на x64, да? Если несложно, создай плиз тестовый скрипт. Можешь еще регистрировать глюк здесь: https://bugs.php.net/search.php?cmd=display&package_name []=PDO+Firebird Будем фиксить, думаю это несложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 11:07 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, это ссылка на bug https://bugs.php.net/bug.php?id=72931 На последних снапшотах он проявляется иначе. Пишет что-то вроде cursor not open ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 11:11 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, Да, на х64. Сейчас уже и нет других-то серверов, по сути. Код: sql 1. 2. 3.
получаем 2147483648 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 11:26 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Krapotkin, У меня не воспроизводится. INT SIZE: 8 array(1) { [0]=> array(1) { ["finter"]=> string(2) "-1" } } Все на x64. Debian, пакет PHP7 из тестинг. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 11:40 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
krapotkin, какой PHP точная версия и разрядность? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 11:47 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Черт, сейчас проверил, не воспроизводится. Но я на днях поднял новую базу, т.к. мой хостер прекратил поддержку Firebird на хостинге. пришлось покупать VDS а код из рабочего сайта взят, поэтому ошибка точно была... была PHP 5.6 на apache 2.2 и подключалась к FB 2.5 сейчас сайт остался на хостинге пока, а база переехала на VDS. Там я поставил FB 3.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 12:04 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
вот ссылка http://ftsso.ru/new.php ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 12:07 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
krapotkin, sweb? Была аналогичная ситуация с хостером, но я ставил PHP7. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 12:07 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
да, sweb. и у них 7 появилась совсем недавно. я решил от греха не менять, мало ли опять какие модули не установлены ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 12:12 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Баг https://bugs.php.net/bug.php?id=72931 . Пишет Код: plaintext
Версия Firebird 3.0.1 Версия php 5.4.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 05:37 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис, да, я все лишь хотел подтвердить, что проблема имеется и делает пока невозможным использование FB3 с некоторыми PHP-фреймворками (например с Yii). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 08:37 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенинпроблема имеется и делает пока невозможным использование FB3 с некоторыми PHP-фреймворками (например с Yii). Или лучше сказать, она делает невозможным использование некоторых фреймворков с FB3. Поскольку баг-то в фреймворках, а не Firebird. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 12:57 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, не в фреймворках, а в PDO. Хотя FB 2.5 нормально работал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 12:59 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисне в фреймворках, а в PDO. А PDO это, типа, не фреймворк, ага... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 13:05 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в фреймворках бага нет. Они честно делают запрос insert ... returning. То что PDO не может догадаться, что это не курсор, скорее всего баг PDO. Но вот почему-то в Firebird 2.5 запросы с returning нормально выполнялись. Причём ошибка происходит и fbclient версии 2.5, значит изменения произошли где-то глубже в самом ядре. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 13:10 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, PDO - это абстрактный слой для работы с различными типами БД. Считай компонент доступа вроде FireDac, UniDac и т.д., но только являющийся частью ядра PHP. В зависимости от DSN PDO подгружает драйвер для работы с конкретной СУБД. Так вот ошибка где-то в этом драйвере, ибо тот же самый Postgres отрабатывает insert ... returning без проблем. Кстати набор функций ibase_* работает нормально, но они не очень удобны для использования в фреймворках, потому что тем удобнее пользоваться унифицированным интерфейсом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 13:21 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисзначит изменения произошли где-то глубже в самом ядре. В ядре, конечно, произошла туева хуча изменений, но для returning как возвращалось isc_info_stmt_execute_procedure, так и возвращается. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 13:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Покопаюсь к пятницу, суботу насчет этой баги. Мы пока на FB2.5 сидим, и там работает без проблем. Но в будущем планируем пересесть на FB3. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 13:36 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, если исправишь будет здорово. А то приходится для Fb3 обходные пути искать. Там есть ещё один недостаток, который проявляется во всех версиях. Предварительный парсер, который вычленяет именованные параметры, делает это везде даже там где не надо. Из-за чего EXECUTE BLOCK наворачивается медным тазом. Вот если бы этот парсер был более умным и искал именованные параметры для EB только во входных параметрах EXECUTE BLOCK [(<params>)] и остальное тело не трогал было бы здорово. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 13:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Денис, Я так, не профи в C, VC14, но впервые, после танцем с бубном и много методом тыка, за день, получилось. Если здесь есть кто-то более продвинут в C, то могу помочь со сборкой, дебагингом и тестингом, и структурами данных в PHP коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2016, 14:08 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Посмотрел насчет баги https://bugs.php.net/bug.php?id=72931 (insert returning) Дело в том что PDO драйвер при execute всегда вызывает isc_dsql_execute. Но как показывют скудные инфы про Firebird, для стэйтмент isc_info_sql_stmt_exec_procedure нужно вызвать isc_dsql_execute2. isc_dsql_execute подразумевает открытие курсора с последующими isc_dsql_fetch. До v3 при "insert returning" FB открывал курсор, но Влад говорил что это глюк, и щас уже не открывает :) Соответственно, isc_dsql_fetch обламывается и получаем ошибку. Щас нужно вызвать уже isc_dsql_execute2 если стэйтмэнт тайп isc_info_sql_stmt_exec_procedure и обрабатывать по другому фетч в драйвере. Я начал сделать, есть мелкие прогрессы, но чувствую будет долго, так как не очень разбираюсь в FB API :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2016, 22:01 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, давай конкретные куски кода - поможем ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2016, 23:52 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Влад, порядок такой: firebird_alloc_prepare_stmt(dbh, sql, sql_len, &num_sqlda, &s, np) /* allocate a statement handle struct of the right size (struct out_sqlda is inlined) */ S = ecalloc(1, sizeof(*S)-sizeof(XSQLDA) + XSQLDA_LENGTH(num_sqlda.sqld)); S->out_sqlda.version = PDO_FB_SQLDA_VERSION; S->out_sqlda.sqln = num_sqlda.sqld; isc_dsql_describe(H->isc_status, &s, PDO_FB_SQLDA_VERSION, &S->out_sqlda) isc_dsql_execute2(H->isc_status, &H->tr, &S->stmt, PDO_FB_SQLDA_VERSION, S->in_sqlda, &S->out_sqlda) На последнем вызове: General error: -804 Incorrect values within SQLDA structure empty pointer to data at SQLVAR index 0 Если просто isc_dsql_execute и потом isc_dsql_fetch(H->isc_status, &S->stmt, PDO_FB_SQLDA_VERSION, &S->out_sqlda) То все работает. Нужно как-то out_sqlda инициализировать по другому в случае isc_dsql_execute2? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 12:26 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociНужно как-то out_sqlda инициализировать по другому в случае isc_dsql_execute2? Её нужно хоть как-то инициализировать. Ясно же пишется: "empty pointer to data", то есть sqldata == NULL. Полученные данные куда клиент должен складывать? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 13:18 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry, да, спасибо, нашел косяк. Там точно &S->out_sqlda->sqlvar[0]->sqldata = NULL Тоесть нужно заранее приготовить буфер. Я думал что это FB делает при describe или execute2. Мысль уловил, копаем дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 13:44 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Ура! Работает! Там если бы был просто C. А такой стиль в драйвере, логика кодирования и организация структур что пипец. Ну.. в общем буду еще тестировать, полировать, упаковывать, и потом открою пулл реквест в PHP мастер. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 14:18 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, Надо бы проверить что ничего старого не сломалось. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 14:24 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
rdb_dev, это я так, образно писал, дебагером смотрел, никакое присвоение Денис, тестировал несколько примеров, все ок, и простые селеты, и даже returning id, name. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 14:32 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Кстати, а как там обьектый API в FB3? готовый к продакшине? есть примеры? Эээх как щас перепишу драйвер :) Слышал что процедурный стиль щас обертка над обьектным... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 14:37 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcociа как там обьектый API в FB3? Взяли старые функции, без применения мозга и фантазии сгруппировали по классам на основе первого хэндла в списке параметров. Всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 14:43 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociКстати, а как там обьектый API в FB3? готовый к продакшине? есть примеры? Эээх как щас перепишу драйвер :) Примеры есть, но переписывать не стоит. Не надо ломать совместимость с 2.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 15:00 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисНе надо ломать совместимость с 2.5 Я так, пошутил конечно. Сможешь тестировать под вин64 билд? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 17:49 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, смогу если билд выложишь. Я не разбирался как его компилировать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 17:53 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Вот: https://mega.nz/#!EFwCDAjT!kVrAzT7YGPi9Aco6IEdZfR_SISenXL3swTQAYBiS2_M После распаковке, клади рядом фиребирдскую либу от тройки или чтоб движок находил ее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 18:31 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, что-то я не пойму. Я думал ты расширение скомпилировал, а тут весь движок PHP. Ладно попробую запустить ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 22:03 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, вроде всё нормально. Проверил различные виды запросов. INSERT, INSERT ... RETURNING, SELECT, EXECUTE PROCEDURE везде результаты правильные и ничего не падает ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 22:33 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociНужно как-то out_sqlda инициализировать по другому в случае isc_dsql_execute2?Нужно указать - куда данные помещать Dorin MarcociТоесть нужно заранее приготовить буфер. Я думал что это FB делает при describe или execute2.Нет, FB клиентской памятью не управляет. В данном случае, скорее всего, память под вых пар-ры\результат выделяется перед первым фетчем. Это я к тому, куда можно посмотреть в имеющемся коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 23:30 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociУра! Работает!Поздравляю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2016, 23:36 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, надо бы ещё посмотреть нет ли утечек памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2016, 09:35 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Денис, вроди проверял, все должно быть OK. В старой реализации шансы были больше на утечек, так как sqldata инициализировалась при firebird_stmt_describe, что было неправильно. Например fetchColumn могли бы не работать, но специально не проверял. Используется только один выходной буффер sqldata для всех записей и при firebird_stmt_dtor все освобождается. Дебаг билд кричит в конце если есть утечки, все чисто пока. Там еще до принятия в мэйнстрим проверяют каким-то валгриндом на утечек. Вот изменения: https://github.com/php/php-src/pull/2230/commits/c92ddeabdc7e40e8e0c2878bd12b96e3dff1a986 Ждем одобрения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2016, 11:01 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Насчет execute block и обработка параметров, вот что есть щас: https://gist.github.com/madorin/83300eaf3d9044bc6e56a710b3700368 new_sql - полученный результат, в хэш списке - именные параметры. Логика там простая и быстрая, но есть проколы, например не учитывает и комменты (--, /* */). Супер навороченный парсер/лексер врядли там понадобится но хочется красивое решение. Нужно в начале определить если "execute block (" и обработать до ")" с существующем алгортиме и все что после передать как есть. Надо еще учитывать комменты, пробелы, табы и ретурны LF/CRLF. Все гики и параноики по оптимизации приветствуется :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 11:32 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociНадо еще учитывать комменты, пробелы, табы и ретурны LF/CRLF. Есть ещё строковые литералы. Я не проверял, но почему-то мне кажется текущий алгоритм будет работать не правильно на вот таких запросах Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 11:43 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
там есть in_quote, это обрабатывается правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 11:46 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
проверь ещё вариант, когда :параметры и 'квотированные строки' находится внутри комментария. стандартный парсер IBX криво это обрабатывал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 12:10 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Мимопроходящий, там пока обработки комментариев нет. Dorin Marcoci, Про строки я проглядел. Там всё нормально. Хотя для комментариев такое простое решение не подойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 12:40 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
обработка комментариев ничуть не сложнее строк. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 12:45 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociНасчет execute block и обработка параметровВозможно, будет полезным посмотреть на аналогичный код из поддержки EXECUTE STATEMENT: https://github.com/FirebirdSQL/firebird/blob/master/src/jrd/extds/ExtDS.cpp см. Statement::preprocess() и getToken() строки с 1001 по 1240 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 12:55 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Влад, кстати планов поддержки именнованных парамов нету? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 13:27 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociВлад, кстати планов поддержки именнованных парамов нету? :)Никто этого не просил, насколько я помню :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 14:24 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
hvlad, было такое пожелание, но автора обругали и сказали мол на фиг не надо http://www.sql.ru/forum/682148/rasshirenie-parsera-fb-obsuzhdenie ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 15:10 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Hello, Симонов Денис! You wrote on 8 декабря 2016 г. 15:18:10: Симонов Денис> было такое пожелание, но автора обругали и сказали мол на фиг не надоникто его там не ругал. DS, как обычно, шапками кидался надувая щеки. а остальным было пофиг. (и мне тоже) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 15:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
МимопроходящийDS, как обычно, шапками кидался надувая щеки. а остальным было пофиг. Ну, тогда я наивно полагал, что если оградить ядерных разработчиков от излишних фичереквестов, они сделают сервер лучше, надёжнее, быстрее. Сейчас моё мнение изменилось, но, как ни странно, основные аргументы остались прежними: у ядерных разработчиков нет на это времени, а остальным, кто теоретически мог бы это сделать, включая меня, оно нафиг не сдалось. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2016, 16:09 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Кто-нибудь пробовал собирать это расширение на linux из исходников? Я правильно понимаю, что нужно будет собирать всё php и одним расширением мне не обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 04:12 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Зря вопрос задал. Оказывается все предельно просто. Если кому вдруг понадобится, то процесс следующий: git clone репозитория php идем в каталог расширения pdo_firebird phpize ./configure make sudo make install ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 05:08 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Начал тестировать fb3 с поправленным pdo_firebird на своем проекте. Ошибка с RETURNING действительно ушла в большинстве мест. Но один запрос все еще ругается, правда теперь с другой ошибкой: General error: -501 Attempt to reclose a closed cursor . The SQL statement executed was: UPDATE TM_MAIL SET READ_DATE = CURRENT_TIMESTAMP WHERE IDTM_MAIL = :IDTM_MAIL RETURNING READ_DATE ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 07:24 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Сделал минимальный пример Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Комментирование строки "$S->closeCursor();" убирает Exception, но так как pdo_firebird используется в проекте через Yii-фреймворк, то это не устраняет проблем конечного приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 10:03 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел ИшенинКомментирование строки "$S->closeCursor();" убирает Exception, но так как pdo_firebird используется в проекте через Yii-фреймворк, то это не устраняет проблем конечного приложения.Каких проблем? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 10:37 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел, поведение правильное. В 3.0 "returning" не открывает курсор, так как возвращается ровно одна запись. Получается уже нечего закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 10:40 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Спасибо. Если поведение правильное, то значит нужно править в приложении или Yii. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 10:57 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел, спасибо и вам, это наводило ны мысль и поимки бага что два последовательных стэйтментов с "returning" не работали правильно. Уже тестировал и фиксил локально. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 11:25 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, всеже мне кажется в pdo_firebird заложена логика чтобы не закрывать курсор в случае ненадобности. Вот код закрытия и он проверяет что S->cursror_open: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
А вот кусок кода, который этот cursor_open выставляет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Таким образом firebird_stmt_execute обладая информацией о типе запроса, выставляет флаг опираясь на другие факторы. Полагаю, что S->cursor_open не нужно выставлять в true для запросов insert, update, delete даже если они возвращают столбец. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:31 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Курсор может быть только для isc_info_sql_stmt_select и isc_info_sql_stmt_select_for_upd ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:41 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
hvladКурсор может быть только для isc_info_sql_stmt_select и isc_info_sql_stmt_select_for_upd И то не всегда. Поэтому тщатильнее надо с установкой этого флага. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:47 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
hvlad, Спасибо, это действительно решает проблему драйвера и Yii без правок последнего. Вот вся правка: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел, код закрытия правильный. Там неправильно инициализировался S->cursor_open в firebird_stmt_execute(). Раньше пологалось что если есть столбцы (out_sqlda.sqln) то это прямо cursor_open. А при синглетонов получается что столбцы есть, а курсора нету :) Вот фикс: https://github.com/php/php-src/pull/2241/commits/6b5dc90efa75c2785d6078b94521ccf1e16ea1c5 Влад, спасибо, учтем. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 12:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел, в твой фикс уже exhausted не будет правильный. Думаю наличие столбцов и исключение синглетонов быстро и достаточно чтобы определить наличие курсора. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:00 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociПавел, в твой фикс уже exhausted не будет правильный. Думаю наличие столбцов и исключение синглетонов быстро и достаточно чтобы определить наличие курсора. Код: plaintext 1.
У меня запрос update, следовательно S->statement_type != isc_info_sql_stmt_exec_procedure. При этом видимо S->out_sqlda.sqln выдает 1. Следовательно твой фикс будет продолжать выставлять cursor_open в true. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:11 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, запросы с returning возвращают isc_info_sql_stmt_exec_procedure ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:16 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Щас проверим, знаю только что при insert returning тип тоже был isc_info_sql_stmt_exec_procedure. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:17 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисПавел Ишенин, запросы с returning возвращают isc_info_sql_stmt_exec_procedure Спасибо, не знал об этом. Тогда видимо проблем с патчем Dorin Marcoci быть не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Все работает правильно: Код: php 1. 2. 3.
Курсор не открывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Денис, вчерашняя статья на хабре учетная, поздравляю! Кстати, нужно добавить доддержку файра и для Doctrine. Очень многие фрэймворки используют ее, и следовательно будет и продвижение. Вот в phpbb3,4 выкинули поддержку :( Получается DBMS хорошая, а продвижение и маркетинг - почти ноль. А то, будет медленно умирать как десктопная дб для делфи... Или может нанять маркетолога. Еще и сайт файра на бутстрапе чтоб респонсив был. Заодно и где-то и список сайтов, built with Firebird :) У нас есть кучка. Вот такой вот маленький оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:40 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, Спасибо. Как только исправление по returning попадёт в драйвер PDO, выпилю кусок гавнокода из моего драйвера Laravel, а то там для тройки прыжки в ширину приходилось делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 13:55 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Хэллоу! Все проснулись? С праздником! Я пилил в своем брэнче фичу чтоб целые типы (SMALLINT, INTEGER, BIGINT) возвращались как целые в PHP а не как щас - строки. Если кому-то интересно протестировать, буду очень рад, так как не хочется сломать что-то другое, особенно на x86. Исходники: https://github.com/madorin/php-src/tree/fb_native ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2017, 18:14 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociХэллоу! Все проснулись? С праздником! Привет. Я и не ложился. С праздником тебя!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2017, 18:38 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Денис, сегодня вышел 7.0.15 и 7.1.1 с * Fixed bug #72931 (PDO_FIREBIRD with Firebird 3.0 not work on returning statement). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 17:26 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, отлично. Спасибо. Подкручу свой модуль для Laravel ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2017, 17:41 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Добавил поддержку булеан полей: https://github.com/php/php-src/pull/2522 Testers are welcome :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2017, 17:38 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Заметил утечку памяти при работе с blob-полями (тестировалось на Yii). Сделаю на днях тест на чистом pdo_firebird. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2018, 16:50 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, с этим не сюда, а в Yii. Если бы утечка была в ФБ, об этом давно было бы известно и исправлено. А так - хрен знает что компонентописатели пишут. Может и с утечкой. Но исправлять-то тогда Yii надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2018, 19:12 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdv, не в fb и не Yii, а в pdo драйвере. Раз уж Dorin Marcoci взялся в нём ошибки править, то логично к нему постучаться. Само сообщество PHP довольно вялое. По крайней мере баги в PDO драйвере для Firebird них не в приоритете, вот если в mysql-ом драйвере ошибку нашли то реагируют значительно быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2018, 19:38 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Yii тут не причем. Вот код на чистом php: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Вот итоги использования памяти: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 04:38 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Забыл добавить, что тестировалось на php 7.1.18 windows. В таблице 2 блоб поля для которых используется следующий домен: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 05:03 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
При анализе кода pdo_firebird вот первое за что цепляется глаз: Код: plaintext 1.
Зачем там erealloc? Разве где-то память выделяется ранее? И если нет, то всегда ли там null? Под все остальные типы используется следующая конструкция: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 06:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисkdv, не в fb и не Yii, а в pdo драйвере. Раз уж Dorin Marcoci взялся в нём ошибки править, то логично к нему постучаться. Само сообщество PHP довольно вялое. По крайней мере баги в PDO драйвере для Firebird них не в приоритете, вот если в mysql-ом драйвере ошибку нашли то реагируют значительно быстрее. самым правильным вариантом будет найти утечку, исправить и сделать пул реквест ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 08:26 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
как минимум зарепортить, если такого тикета еще нет ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 08:26 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, Для начала хотелось бы подтверждения от других участников, что - либо утечка действительно подтверждается - либо я что-то делаю не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 09:12 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, не факт что утечка есть. Менеджер памяти PHP не обязан моментально освобождать память. Ну и не плохо бы проверить разные варианты, когда есть BLOB поле и когда его нет. Павел ИшенинЗачем там erealloc? Разве где-то память выделяется ранее? И если нет, то всегда ли там null? я не слишком разбираюсь во внутренностях PHP, но для BLOB заранее память может быть выделена разве что для ISC_QUAD и Null флага. А вот с самим содержимым BLOB намного сложнее, там как раз память должна выделяться если блоб не пустой. А вот когда оно должно освобождаться хз, по идее по правилам PHP ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 09:34 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, а как тестируете? консольно вряд ли получится имеет смысл сделать скрипт, например test.php, в той же папке запустить php в режиме девсервера, дать нагрузку и смотреть за расходом памяти Код: sql 1. 2.
по завершении каждого запроса все ресурсы а соответственно и память, занятая ими, должны быть освобождены. если память постоянно будет расти то имеет место утечка зы проверьте тот же сценарий с расширением interbase (ibx_) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 09:49 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, Тестирую именно консолью. Обратите внимание на скрипт - это просто последовательный запрос таблицы по 250 строк. На моей таблице > 200 тысяч строк я получаю превышение памяти в php. Я пробовал этот скрипт и с принудительной сборкой мусора и без. Если вдаваться в логику, то statement при смерти должен удалять буферы, и как следствие память не должна расти при запросе очередной порции строк. Более того, я проверил этот скрипт на postgres и там действительно нет роста памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 11:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, а что с ibase_? извиняюсь, в пред сообщении написал ibx ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 11:34 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Дегтярев Евгенийа что с ibase_? извиняюсь, в пред сообщении написал ibx Может ли это помочь проблеме? И если да, то как? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 11:44 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, в ibase_ работа с BLOB реализована чуток иначе. Там есть два режима вычитки блобов. 1. При фетче читается только blob_id из которого ibase_ функциями можно прочитать содержимое 2. Читается всё содержимое блоба при фетче (при соответствующем флаге) Я так понимаю эти два случая надо рассматривать отдельно. Скорее всего 1-ый случай работает без косяков, так как управление хендлами отдаётся на откуп пользователю (см. ibase_blob_close). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 11:48 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел ИшенинЕсли вдаваться в логику, то statement при смерти должен удалять буферы Не должен. Блобы могут читаться отдельно без всякого статемента. Их кэш может быть привязан к транзакции или коннекту. В твоём коде не освобождается ни то ни другое. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 12:21 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, поскольку PDO не умеет читать идентификаторы BLOB, а всегда читает сразу его содержимое (хотя по уму могли бы и поток для этого организовать), то в самом драйвере они должны освобождать внутренние структуры блоба сразу после фетча. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 12:53 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
а не вру, есть возможность читать BLOB как поток, но через опу http://php.net/manual/ru/pdo.lobs.php ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 12:58 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел ИшенинДегтярев Евгенийа что с ibase_? извиняюсь, в пред сообщении написал ibx Может ли это помочь проблеме ? И если да, то как? как вариант, да, там может не быть этой проблемы когда сталкивался со связкой php+fb использовал функции ibase_xxx, pdo_firebird обходил стороной, т.к. с ним периодически всплывали какие то траблы за ответом как, сюда - http://php.net/manual/ru/book.ibase.php ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 14:08 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел ИшенинПри анализе кода pdo_firebird вот первое за что цепляется глаз: Код: plaintext 1.
Зачем там erealloc? Разве где-то память выделяется ранее? И если нет, то всегда ли там null? Под все остальные типы используется следующая конструкция: Код: plaintext 1.
дело в том что у остальных типов длина фиксирована, поэтому достаточно выделить память один раз. А для BLOB который сразу преобразуется в текст приходится переаллокировать буфер при каждом фетче. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 14:29 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПавел ИшенинЕсли вдаваться в логику, то statement при смерти должен удалять буферы Не должен. Блобы могут читаться отдельно без всякого статемента. Их кэш может быть привязан к транзакции или коннекту. В твоём коде не освобождается ни то ни другое. Имелся ввиду вот этот код pdo_firebird : Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 16:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Дегтярев Евгенийкак вариант, да, там может не быть этой проблемы когда сталкивался со связкой php+fb использовал функции ibase_xxx, pdo_firebird обходил стороной, т.к. с ним периодически всплывали какие то траблы Если прочитать моё начальное сообщение, то видно что я пишу про работу с Firebird в библиотеке Yii. Там используется PDO. Какой смысл проверять не PDO, если мне надо разобраться с проблемой именно в нём? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 16:57 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денисдело в том что у остальных типов длина фиксирована, поэтому достаточно выделить память один раз. А для BLOB который сразу преобразуется в текст приходится переаллокировать буфер при каждом фетче. Спасибо, мне что-то в голову это не пришло. Тогда всё вроде верно написано. Ну может вместо realloc было бы выгодней сделать free + malloc если realloc ведет к фрагментации памяти. Тем не менее, это не должно порождать утечку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 17:03 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел ИшенинДегтярев Евгенийкак вариант, да, там может не быть этой проблемы когда сталкивался со связкой php+fb использовал функции ibase_xxx, pdo_firebird обходил стороной, т.к. с ним периодически всплывали какие то траблы Если прочитать моё начальное сообщение, то видно что я пишу про работу с Firebird в библиотеке Yii. Там используется PDO. Какой смысл проверять не PDO, если мне надо разобраться с проблемой именно в нём? в том чтобы проверить, локализовать и зарепортить все возможные проблемы ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 17:04 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Можете протестить тот же код на таблицы/полей без блобов и проверить память или скажем на Postgres блобах? Глянул еще раз на firebird_fetch_blob( вроди ничего криминального не нашел. К выходу идет ptr и len который потом освобождается в базовой PDO классе. Обычно пхп девы тестят все изминения Valgrind-ом и другими тулами, чтобы минимизировать утечки. Если все же уверен что утечка есть, то создай баг репорт с юнит тест кэйсом наподобие: https://github.com/php/php-src/tree/8582e53430f12ce36f621d034a40d10ea01061fc/ext/pdo_firebird/tests ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 13:06 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, оно легко воспроизводится Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
авторFirst used: 2097152 0 itteration used: 4194304 1 itteration used: 4194304 2 itteration used: 6291456 3 itteration used: 6291456 4 itteration used: 8388608 5 itteration used: 8388608 6 itteration used: 8388608 7 itteration used: 10485760 8 itteration used: 12582912 9 itteration used: 12582912 10 itteration used: 12582912 11 itteration used: 14680064 12 itteration used: 16777216 13 itteration used: 16777216 14 itteration used: 16777216 15 itteration used: 18874368 16 itteration used: 18874368 17 itteration used: 20971520 18 itteration used: 23068672 19 itteration used: 23068672 Last used: 23068672 в базе данных ~200 процедур. При замене BLOB на строку утечек нет. Интересно что при повторном запуске скрипта память постепенно стабилизируется. Наверное менеджер памяти там такой хитрый. И ещё вот здесь Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
нет проверки на допустимость номера столбца. В результате при вызове PDOStatement::fetchColumn с номером большим чем количество столбцов имеем segfault с падением web сервера. Надо бы ошибку бросать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 13:51 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociГлянул еще раз на firebird_fetch_blob( вроди ничего криминального не нашел. К выходу идет ptr и len который потом освобождается в базовой PDO классе.А сам блоб - закрывается ? Симонов Денисоно легко воспроизводитсяТут автокоммит вкл ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 13:57 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
hvlad, я пробовал его отключать (по умолчанию включен). Разницы никакой. Кстати разве после закрытия блоб всё ещё будет потреблять ресурсы на клиенте, даже если транзакция не завершена? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 14:02 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисКстати разве после закрытия блоб всё ещё будет потреблять ресурсы на клиенте, даже если транзакция не завершена?После закрытия - конечно не будет. Вопрос в том - закрыты ли они. Однако, коммит (роллбек) должен освобождать клиентские ресурсы, связанные с блобами. Отсюда был вопрос об автокоммите. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 14:13 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, Если есть возможность поотлаживать код pdo-firebird, то в какой момент вызывается firebird_stmt_dtor? И что если добавить вывод потребления памяти до и после erealloc? Я не знаю как работает этот erealloc, но традиционно перевыделение вызывает фрагментацию и медленнее освобождения с повторным выделением поскольку менеджер должен, помимо прочего, скопировать содержимое старого блока памяти в новый (чего, как я понимаю, в данном случае не требуется). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 18:21 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, там КМК это можно оптимизировать. Например выделять для начала 32K памяти, если блоб больше увеличивать, т.е. перевыделять память только если для БЛОБа её требуется больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 19:51 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Павел Ишенин, ура!!! Нашёл утечку. Не зря тебе подозрительным вот этот кусок показался Павел ИшенинПри анализе кода pdo_firebird вот первое за что цепляется глаз: Код: plaintext 1.
только дело не в erealloc, а в том память перевыделяют для для ptr, в котором вообще чужой буфер может быть из столбца к которому обращались до BLOBa (в моём тесте из NAME). Вот правильный код Код: plaintext 1.
тест Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
теперь надо бы патч оформить. Буду разбираться как им написать ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 16:39 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
в трекер написал https://bugs.php.net/bug.php?id=76488 патч приложил ждём реакции ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2018, 16:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Денис, спасибо за фикс! Нужно сделать тест-кэйс и пулл реквест на гитхабе, о то будешь ждать бесконечно долго. Попробую, может сделаю я, но дико не хватает время. Последние месяцы занят повседневными проэктами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2018, 11:46 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Денис, там тест кэйс должен падать при нынешнем коде, и пройти успешно с твоим кодом. Например, типа утечка ноль, а с текущим кодом > 0. Но думаю смерджят. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:36 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, оно падает только при segfault, а если утечка идёт, то оно скорее всего просто упрётся в ограничения на потребляемую память процессом php, который зависит от настроек. То же надеюсь что смержат. Мне комменты присылаются на почту. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:43 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
не то что прямо падал процес :) мой рускиш не родной.. имел ввиду чтоб не прошел тест, тоесть другой результат, не тот что в еxpected ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 17:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, а.. так ты про это. Мне дали вот такой коммент nikic It shouldn't be necessary to test memory usage explicitly (because a leak message will be printed in debug builds), just have a code that was previously leaking. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 17:58 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
патч приняли :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:02 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Поздравляю! :) Анатолий (weltling) там человек добрый, русский, работает в MS, Германии. Наверное отвечает за php под windows, во многом помогал при правке багов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 19:11 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Наконец-то в ветку PHP 7.4 приняли мой патч для нативной поддержки типа BOOLEAN во входных параметрах PDO firebird support type Boolean in input parameters ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 17:31 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисНаконец-то в ветку PHP 7.4 приняли мой патч для нативной поддержки типа BOOLEAN во входных параметрах PDO firebird support type Boolean in input parameters Поздравляю ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 18:00 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
В PHP 7.4 PDO будет поддерживать базы данных в 1 диалекте. Мой патчи применили Add support for Interbase 1 dialect ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 09:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci Насчет execute block и обработка параметров, вот что есть щас: https://gist.github.com/madorin/83300eaf3d9044bc6e56a710b3700368 new_sql - полученный результат, в хэш списке - именные параметры. Логика там простая и быстрая, но есть проколы, например не учитывает и комменты (--, /* */). Супер навороченный парсер/лексер врядли там понадобится но хочется красивое решение. Нужно в начале определить если "execute block (" и обработать до ")" с существующем алгортиме и все что после передать как есть. Надо еще учитывать комменты, пробелы, табы и ретурны LF/CRLF. Все гики и параноики по оптимизации приветствуется :) hvlad Dorin MarcociНасчет execute block и обработка параметров https://github.com/FirebirdSQL/firebird/blob/master/src/jrd/extds/ExtDS.cpp см. Statement::preprocess() и getToken() строки с 1001 по 1240 сделал https://github.com/php/php-src/pull/4920 вроде работает. Осталось дождаться ревьювера и оформить по их правилам, и написать тесты. Владу спасибо за подсказку ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2019, 17:10 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
;) Денис, это невероятно круто, спасибо за труд! Есть еще какие-то косяки помню с транзакциями (параметры и несколько паралельных) и вообще получится конфетка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 16:28 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, ну пока это не приняли, я ничего нового делать не буду. Там это рихтовать скорее всего ещё придётся. Если вспомнишь в чём именно косяки посмотрю потом. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 16:36 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, если ты про несколько транзакций внутри соединения, то на это проще забить. PDO архитектурно этого не поддерживает, ибо интерфейс у него обобщённый на разные СУБД. А такое поддерживает только 2 (IB и FB). Впрочем в пыхе оно и не сильно надо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 16:41 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис если ты про несколько транзакций внутри соединения, то на это проще забить. PDO архитектурно этого не поддерживает, ибо интерфейс у него обобщённый на разные СУБД. А такое поддерживает только 2 (IB и FB). Впрочем в пыхе оно и не сильно надо Это я знаю ) но думал теоретически может как в файрдаке добавить какой-то PDOTransaction обьект Еще параметры транзакций были вшиты как read-commited или точно помню что там было что-то, проверю ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 17:00 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin MarcociЭто я знаю ) но думал теоретически может как в файрдаке добавить какой-то PDOTransaction обьект теоретически можно, но боюсь коммунити такое изменение зарежет на корню. Ибо этот PDOTransaction надо передавать в PDOStatement::execute. А не так как сделали в ibase_ (они к prepare привязали) Лучше уж тогда написать нормальный нативный драйвер. Dorin MarcociЕще параметры транзакций были вшиты как read-commited или точно помню что там было что-то, проверю ) там SNAPSHOT. Если нужны другие уровни изолированности, то можно стартовать транзакцию через Код: php 1.
по идее. Надо проверить кстати работает ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 17:47 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Было бы удобно передать изолированность транзакции в конструкторе PDO обьекта. Другие драйверы делают что-то подобное. public PDO::__construct ( string $dsn [, string $username [, string $passwd [, array $options ]]] ) << здесь Кто-то даже начал очень давно такое: https://github.com/php/php-src/blob/e208d236b3f8af855e219ea3abc796b8dd9d0d5d/ext/pdo_firebird/firebird_driver.c#L276 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 19:20 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис теоретически можно, но боюсь коммунити такое изменение зарежет на корню. Ибо этот PDOTransaction надо передавать в PDOStatement::execute. А не так как сделали в ibase_ (они к prepare привязали) Можно же менее хардкорно, например Код: php 1. 2.
И весь существующий код будет работать и не мешать другим :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 21:37 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dorin Marcoci, а толку то? Ещё повторю подготовленные запросы не привязаны к транзакции и далее могут выполняться сколько угодно раз в разных транзакциях ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2019, 22:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис подготовленные запросы не привязаны к транзакции ок, а так? тоже не ломает совместимость. Код: php 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2019, 11:59 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
ну наконец-то применили мой патч Fix #64937: Firebird PDO preprocessing sql Теперь в PHP 8.0 - параметры внутри однострочных и многострочных комментариев игнорируются - можно выполнять операторы {CREATE [OR ALTER] |ALTER|RECREATE} {PROCEDURE|FUNCTION}. Двоеточие внутри тела процедуры, функции, триггера, анонимного блока или пакета не рассматривается как маркер параметра. Для заголовков EXECUTE BLOCK происходит отдельная обработка (параметры обрабатываются только между EXECUTE BLOCK и AS). Теперь этот оператор можно смело использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 09:13 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис ну наконец-то применили мой патч ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 10:41 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис, молодец ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 10:49 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис Для заголовков EXECUTE BLOCK происходит отдельная обработка (параметры обрабатываются только между EXECUTE BLOCK и AS) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 18:33 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Здравствуйте. Осваиваю работу с FB через PDO. Пока не понял как правильно работать с транзакциями. Можно ли по дефлоту всегда использовать режим read commited, nowait? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 15:46 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_ Можно ли по дефлоту всегда использовать режим read commited, nowait? ответ: нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 15:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, можно, а зачем? Чем не устраивает стандартный SNAPSHOT? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 16:00 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, собственно, Денис уже ответил, а вся другая дока по ФБ на русском (включая его статью) есть тут http://www.ibase.ru/develop/ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 18:52 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdv> есть тут http://ibase.ru/develop/ Ты бы когда дизайн менял лучше бы контент (структуру) причесал: - почему раздел (адрес) документация называется "develop", а не doc[umentaion]? сделай редирект, это ведь несложно; - почему он вообще идёт подразделом раздела "Статьи", а не отдельным пунктом? - почему библиотеки, драйверы (не статьи о них, а ссылки) и пр. идут в разделе "Статьи"? Ну и т.д. Понятно, что так колхоз исторически сложился, но таки 2021 год на дворе... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 22:17 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, - сайт был перенесен со статики. Теперь там такое количество редиректов, что если еще добавлять, то с ума сойти можно. - потому что так сделали при переносе - потому что так сделали при переносе И вообще. Любой редирект - один хрен старая ссылка навечно. Потому что если ее поменять, как делают некоторые, ВСЕ ссылки на эту страницу извне протухают. Колхоз-шмалхоз, лично мне до лампы, как эти ссылки называются. Статьи потому что в Документации тоже статьи. По опыту - никто нихрена явно ссылок не помнит (кроме меня), сколько ни показывай или повторяй. Работает только явное указание на разделы от корня - "зайдите сюда, ткните сюда, и вот тут оно будет". И я сам, кстати, именно так и делаю. Конечно, я могу сделать www.ibase.ru/doc/ . Только это doc чего? ibase.ru? Firebird? Embarcadero? ibase.com.tw? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 00:31 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdv> Потому что если ее поменять, как делают некоторые, kdv> ВСЕ ссылки на эту страницу извне протухают. ЯННП. Что протухает, если старая ссылка (адрес) редиректится на новую страницу? > Конечно, я могу сделать www.ibase.ru/doc/ . > Только это doc чего? ibase.ru? Firebird? ibase.ru конечно. Щас он чего develop Документация ? P.S. В общем, если не надо - и хрен с ним. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, ок, тогда сделаем шаг назад. Документация находится по ссылке /develop/, а надо чтобы /doc/ или /documentation/. Это чтобы что? Чтобы было красиво, или ...? У меня механизм хождения по сайтам такой - я открываю либо центральный сайт, либо сохраненную ссылку внутрь сайта. И мне до лампочки как там называются ссылки, если я тыкаю в страницы. Поэтому я вот этой мысли про "красивый редирект" не очень понимаю. Просто вот пример. Была статическая страница ibase.ru/gbak.html (или htm, уже не помню). При переводе на динамику ее сделали ibase.ru/gbak/. Однако, понятно, на куче сайтов есть старые ссылки на gbak.html. Делаем редирект, с gbak.html на /gbak/, чтобы не выдавало 404 (в конкретном примере данный редирект куда-то пропал, х.з. по чему, надо перепроверять все редиректы). Так. Теперь, делаем редирект с несуществующего /doc/ на существующий /develop/ (или как?). Теперь у нас ДВЕ ссылки, которые - одна уже массово расползлась (старая), и новая, которая будет расползаться. Допустим, меняем физически - /doc/ существует а /develop/ стал редиректом. Но /develop/ все равно будет существовать на туче внешних сайтов, еще хрен знает сколько лет. То есть, красота не спасает мир. И зачем тогда это всё? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:07 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
@kdv, а чего боятся редиректов? Главное чтобы были обоснованные. Можно просто в нгинксе сделать отдельный от сайта резолвер с большим списком если не находит изначально линк. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
На статьи ibase часто ссылаются, лучше не трогать. А то будет как с microsoft.com: сколько не находишь на форумах ссылок на материалы, чуть более старые всегда ведут в "пустоту". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:27 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис avp_, Чем не устраивает стандартный SNAPSHOT? Т.е. если у меня на странице 10 читающих запросов, то при её построении будет запущено и закоммичено 10 снапшотных пишущих транзакций? Флаг read_only однако полезно было бы по дефлоту использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:54 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
25.05.2021 12:54, avp_ пишет: > Флаг read_only однако полезно было бы по дефлоту использовать. кто мешает использовать его НЕ по дефолту? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:57 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_Т.е. если у меня на странице 10 читающих запросов, то при её построении будет запущено и закоммичено 10 снапшотных пишущих транзакций? Нет, только если ты сделаешь идиотскую схему "каждому запросу отдельную транзакцию". avp_Флаг read_only однако полезно было бы по дефлоту использовать. Любая транзакция по дефолту read_only пока ничего не записала. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:13 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
При попытке явного управления из статьи выдаёт странную ошибку: Код: php 1. 2. 3.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:15 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Не управляй транзакциями через SQL, для этого есть методы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Нет, только если ты сделаешь идиотскую схему "каждому запросу отдельную транзакцию". Почему? Autocommit же по умолчанию включен? Dimitry Sibiryakov Любая транзакция по дефолту read_only пока ничего не записала. Это больше из соображений гигиены. Зачем куче читающих запросов давать потенциально пишущую транзакцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, ещё раз спрашиваю. Чем это плохо? В Firebird 3.0 счётчик транзакций довольно большой, так что лишний старт транзакции ничем не грозит. Если вам надо стартовать одну транзакцию на несколько запросов, то это можно сделать только явно. Опять же не вижу причин использовать другие уровни изолированности и READ ONLY. Дело в том что в PHP транзакции долго не живут. В том смысле, что они не живут вечно. Транзакция в любом случае будет завершена после смерти php скрипта. Это тебе не Дельфи где открыл грид, он отфетчил 500 записей из миллиона и держит транзакцию активной, пока любо приложение не завершили, либо грид не закрыли. Даже если вам всё-таки потребовалось использовать транзакции с параметрами отличными от умолчательных, я показал как это можно сделать. Сам по себе голый PDO не удобно использовать, поэтому вы можете написать свою обёртку вокруг него и использовать такие транзакции какие захотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:20 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_Autocommit же по умолчанию включен? С этим - к PHP. У Firebird он по молчанию выключен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:22 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_ При попытке явного управления из статьи выдаёт странную ошибку: Код: php 1. 2. 3.
Код: plaintext 1.
а вот это я могу глянуть, как время появится ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:25 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, в принципе можно допилить драйвер так чтобы можно было в атрибутах соединения задавать параметры транзакции по умолчанию. Вот только делать это долго и муторно. Опять лезть и разбираться в ужасном сишном коде, брррр. Последний раз туда год назад заглядывал. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:30 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов ДенисВ Firebird 3.0 счётчик транзакций довольно большой, так что лишний старт транзакции ничем не грозит. В 3.0 - да, но ... высокая частота старта транзакций = нагрузка на header page, а значит появление тормозов на блокировке к единственной странице. Собственно, еще на ИБ 5.6 "чинил" одну базу - там веб-приложение, и разраб сделал формирование веб-страницы в одной транзакции (вытаскивание элементов из базы). Потом или другой пришел, или этому что стукнуло, и типа автокоммита включил или неявных транзакций. И ... за неделю кончился счетчик транзакций. Не 2млрд, как должно быть, а из-за бага 5.6 с размером страницы там было где-то в 8 раз меньше. Но тем не менее. Еще видел однопользовательское приложение, которое каким-то образом фигачило по 500 тыщ транзакций в день. Проработало три года, доехало до 500млн транзакций, TIP стал размером 130 мегабайт (вся база была где-то 600мб). Зачем такое надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:55 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdvTIP стал размером 130 мегабайт (вся база была где-то 600мб). Лет 10-15 назад я предлагал освобождать старые TIP, но всем лень. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 14:15 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdv Симонов ДенисВ Firebird 3.0 счётчик транзакций довольно большой, так что лишний старт транзакции ничем не грозит. В 3.0 - да, но ... высокая частота старта транзакций = нагрузка на header page, а значит появление тормозов на блокировке к единственной странице. Очень интересно! Сейчас как раз воюю со случайными затормаживаниями старта транзакций (на 2-4 сек!) при частоте ~ 80 тр/сек. Не с этим ли связано? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 14:40 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Тормоза на 2-4 секунды могут дать только триггера с обращениями к таблицам мониторинга. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 14:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Тормоза на 2-4 секунды могут дать только триггера с обращениями к таблицам мониторинга. Триггер на транзакцию есть, но там просто проверка параметров. 2-3 Rdb$Get_Context и сравнений. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:19 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdv> Так. Теперь, делаем редирект с несуществующего /doc/ kdv> на существующий /develop/ (или как?) Ниаборот! (с) kdv> Но /develop/ все равно будет существовать на туче kdv> внешних сайтов, еще хрен знает сколько лет. kdv> То есть, красота не спасает мир. И зачем тогда это всё? Да, нехай будет как есть. И так сгодится. (с) Так и живём. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Если я просто сделаю так Код: php 1.
то как работать в таком режиме? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 17:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_как работать в таком режиме? "В соответствии с документацией" не предлагать?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 17:26 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov "В соответствии с документацией" не предлагать?.. При снятии режима autocommit первый же запрос даёт ошибку: Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: -901 Dynamic SQL Error SQL error code = -901 invalid transaction handle (expecting explicit transaction start) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 18:45 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Чтобы документация подействовала - её надо читать. Понюхать, полизать и на хвост нанизать недостаточно, как мы все знаем из классики. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 18:55 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, а нельзя всё-таки начать читать http://www.ibase.ru/files/articles/firebird_examples/how_to_create_application_firebird_php.pdf с самого начала, и внимательно особенно с 12й страницы? Раз автокоммит убран, значит транзакции надо самому стартовать и завершать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 22:10 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_ При попытке явного управления из статьи выдаёт странную ошибку: Код: php 1. 2. 3.
Код: plaintext 1.
а какую версию PHP и firebird вы используете? У меня всё работает Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Нормально PDO с Firebird можно использовать начиная с PHP 7.4, в предыдущих версиях было полно багов. Я сам штуки 4 пофиксил. А в 8.0 ещё одну. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 23:11 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис а какую версию PHP и firebird вы используете? У меня всё работает самый свежи php 8.0.6 FB2.0.7 диалект 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 17:05 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
kdv avp_, а нельзя всё-таки начать читать http://www.ibase.ru/files/articles/firebird_examples/how_to_create_application_firebird_php.pdf с самого начала, и внимательно особенно с 12й страницы? Раз автокоммит убран, значит транзакции надо самому стартовать и завершать. Всё это прочитано, но толком не понято. Просто по своему названию "AUTOCOMMIT" следует думать что он влияет только на алгоритм коммита. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 17:11 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис Как - писал, а зачем - нет. Всё это было не раз и к сожаленью Всё повторится, всё повторится, Я только время поменяю и лица... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 19:31 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Появились ещё вопросы: 1. Почему тип дата-время возвращается строкой, а не объектом DateTime ? 2. Верно ли я понимаю что блобы попавшие в выборку автоматически целиком загружаются при каждом фетче? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2021, 15:23 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, 1. потому что в PHP DateTime кастрированный. Посмотри его диапазон значений и сравни с диапазоном в Firebird. 2. верно, хотя кое что можно было бы докрутить ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2021, 15:42 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Странно, но такой запрос вызвает падение процесса php: Код: php 1.
В то время как через prepare - выполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 16:17 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Как правильно биндить параметры имеющие тип дата-время? При попытке передать строкой выдаёт ошибку "General error: -804 Dynamic SQL Error SQL error code = -804 Incorrect values within SQLDA structure" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 17:18 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, пример кода дашь, что ты делаешь, тогда может и подскажу ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 17:32 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Сорри, косяк бы в другом - при пропущенном параметре странное сообщение об ошибке. Но небольшой вопрос остаётся - почему нельзя в параметр записать тип php DateTime а надо преобразовывать в строку понимаемую сервером. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 18:27 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
avp_, Отвечал уже. Посмотри какой диапазон дат поддерживает пыховский тип и какой фб ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 23:05 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Вообще странно что все пытаются напрямую голый пдо юзать. Ну напишите вы обертку вокруг него которая будет нужные вам преобразования делать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 23:07 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Симонов Денис Вообще странно что все пытаются напрямую голый пдо юзать. Ну напишите вы обертку вокруг него которая будет нужные вам преобразования делать А что такого в голом pdo? Всё вроде пока устраивает кроме работы с датами. Обёртку писать только ради них как то лениво. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 19:56 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Выявил некоторые странности при работе с транзациями через PDO. 1. Если установлен PDO::ATTR_AUTOCOMMIT=> true, то автокоммит делается не после каждого запроса, а только после каждого МОДИФИЦИРУЮЩЕГО запроса. Как он определяет что запроса модифицируюций - х.з. Наступил на грабли когда в цикле опрашивал таблицу селектами, а транзация по дефлоту снапшот и не коммитилась. 2. Если установлен PDO::ATTR_AUTOCOMMIT=> true, то в блоке между PDO::beginTransaction и PDO::commit автокоммит всё равно работает для модифицирующих операторов. Вот это весьма странно. Т.е. в этом случае beginTransaction нельзя использовать. 3. Если установлен PDO::ATTR_AUTOCOMMIT=> false, то без без beginTransaction ни один оператор не сработает, даже селект. Также если не было нигде commit, то при окончании скрипта транзакция откатывается. Вроде бы логично. Но непонятно тогда что в случае если в скрипте были только чтения - тоже роллбэк будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 17:07 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
автокоммит - ЗЛО ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 17:09 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Мимопроходящий автокоммит - ЗЛО Это да. Но как то неохота в конце каждого скрипта вставлять $db->commit(); Хотя может оно будет и правильно... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 18:49 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Мимопроходящий автокоммит - ЗЛО ой, люто плюсую... зы лет пять назад понадобилось из golang в fb ходить, решение которое было на тот момент (по моему до сих пор другого не появилось) использовало параметры транзакции как в fb/ib по умолчанию повелось, стартует транзакция по умолчанию (не php, висеть долго будет), отдельно можно стартануть транзакцию, но параметры ей задать нельзя (на тот момент)... пришлось выкручиваться - прикрутили параметры транзации в параметры соединения, так и жевет это по сей день с двумя пулами коннетов - на чтение и на запись )) костыль? еще какой! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 20:49 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Проблема то в том что по умолчанию автокоммит включен. Итого пока остановился на такой схеме работы: 1. PDO::ATTR_AUTOCOMMIT=> false 2. создаём базу $db = new PDO(....) 3. сразу затем вызываем $db->beginTransaction(); 4. С помощью register_shutdown_function регистрируем функцию которая делает $db->commit(); Итого все скрипты работают в одной транзакции которая автокоммитится при завершении. Для особых случае планируется сделать доп. флаг: aвтокоммит/автороллбэк. 5. Ещё желательно сделать какой то флаг чтобы скрипт явно декларировал потребность в rw транзакции и чтобы по дефлоту транзакция была read_only. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 21:18 |
|
PDO Firebird bugs
|
|||
---|---|---|---|
#18+
Что то никак у меня не запускаются транзакции вручную: Код: php 1. 2.
Выдаёт ошибку: Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: PDO->exec('SET TRANSACTION...') Пробовал FB2.0-2.5, диалекты 1,3 - нигде не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 17:42 |
|
|
Start [/forum/topic.php?all=1&fid=40&msg=40072857&tid=1559821]: |
0ms |
get settings: |
3ms |
get forum list: |
11ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
1ms |
get page messages: |
107ms |
get tp. blocked users: |
0ms |
others: | 124ms |
total: | 282ms |
0 / 0 |