Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Кто разбирается во "внутренностях" PHP драйвере?  [new]
Alexey Kovyazin
Member

Откуда: Moscow
Сообщений: 492
Всем привет,

если кто-нибудь разбирался или разбирается в начинке PHP-драйвере Firebird, напишите мне ak@ibase.ru, пожалуйста.

With best regards,
Alexey Kovyazin
HQbird www.ib-aid.com
Техподдержка www.ibase.ru
4 апр 19, 11:12    [21852272]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Alexey Kovyazin,

я во внутренностях PDO немного разбираюсь. Даже багу там поправил. Ещё там разбирается Dorin Marcoci

Или речь про ibase_* драйвер который в PHP 8.0 решили убрать?
4 апр 19, 12:28    [21852457]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1049
Во кипит-то... https://externals.io/message/104883#104990
8 апр 19, 16:43    [21856199]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29784

пишут, пишут...
конгресс, немцы какие-то...
голова пухнет!
(С)

Posted via ActualForum NNTP Server 1.5

8 апр 19, 16:54    [21856212]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47284

PHP изначально был ещё одним странным языком для генерации HTML. Назачем его ещё
поддерживают и куда-то развивают - непонятно в принципе.

Posted via ActualForum NNTP Server 1.5

8 апр 19, 16:56    [21856214]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29784

это стильно, модно, молодёжно! (С)

Posted via ActualForum NNTP Server 1.5

8 апр 19, 16:58    [21856215]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
o_v_a,

ну и хорошо что кипит. На самом деле внутреннее устройство и удобство ibase драйвера оставляет желать лучшего. Очень неприятный момент с тем что параметры в подготовленный запрос можно передавать, только как переменное количество параметров. Крайне уродливый код выходит.

Кстати хотелось бы более подробно узнать в каком месте именно проблема.
Насколько я понял основная проблема а потоко-небезопасных хэндлах, но единственное место где они шарятся, это ожидание евентов, хотя может я чего-то не понимаю.

Порадовала новость https://firebirdsql.org/en/news/revival-of-php-driver-development/
Там Мартин Кодитц чего то делает, но что именно не ясно. Его форка в котором есть хоть какие-то изменения я не нашёл, наверное в приватной ветке. Можно было бы помочь, если понимать, что именно надо исправлять.

Что касается PHP PDO, то оно тоже не идеально.
Во-первых оно не поддерживает специфичных фич Firebird:
- множество транзакций на соединение
- события
- доступ к сервис API
- возможность узнать типы и свойства параметров после подготовки запроса

Во-вторых даже имеющиеся возможности PDO сделаны не до конца, так функция getColumnMeta не реализована вовсе. Параметры внутри реализованы тоже так себе: по возможности внутрях всё переводится в текст и меняется тип параметра, что уничтожает сведения о предыдущем значении типа. Я это понял когда на выходных прикручивал возможность передачи BOOLEAN в качестве параметра.
8 апр 19, 17:10    [21856244]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47284

Чисто любопытно: про драйвер к LUA уже все забыли или кто-то ещё его пилит?

Posted via ActualForum NNTP Server 1.5

8 апр 19, 17:18    [21856264]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29784

08.04.2019 17:18, Dimitry Sibiryakov пишет:
> Чисто любопытно: про драйвер к LUA уже все забыли или кто-то ещё его пилит?

еретики!

Posted via ActualForum NNTP Server 1.5

8 апр 19, 17:32    [21856287]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Dimitry Sibiryakov
PHP изначально был ещё одним странным языком для генерации HTML. Назачем его ещё
поддерживают и куда-то развивают - непонятно в принципе.

ну как бы есть спрос - https://w3techs.com/technologies/overview/programming_language/all
а причинах модно долго рассуждать, но факт остается фактом

Мимопроходящий
это стильно, модно, молодёжно! (С)

стильно модно молодежно это nodejs ))
8 апр 19, 20:09    [21856453]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Симонов Денис
Очень неприятный момент с тем что параметры в подготовленный запрос можно передавать, только как переменное количество параметров. Крайне уродливый код выходит.

не понял о чем ты
??
8 апр 19, 20:10    [21856454]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

да вот про это

ibase_execute ( resource $query [, mixed $... ] ) : resource


нет чтобы

ibase_execute ( resource $query, array $params = []) : resource
8 апр 19, 20:14    [21856457]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
сложно судить почему сделали так а ни эдак, но я не вижу в этом проблемы, один раз обернул и забыл
8 апр 19, 20:19    [21856461]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
зы
поясните откуда весь этот кипишь пошел?
8 апр 19, 20:20    [21856464]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

да всё очень просто в PHP 8.0 (следующая за 7.4) решили переместить ibase_ расширение в PECL, потому что хендлы не потокобезопасные. Оно вроде как ничего, так как хендл соединения не выходит за пределы работающего скрипта, за исключением использования функции ibase_wait_event
8 апр 19, 20:27    [21856465]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений
сложно судить почему сделали так а ни эдак, но я не вижу в этом проблемы, один раз обернул и забыл


вот как обёртку не делай, она уродством выглядит, самое красивое что получилось

        $function = new \ReflectionFunction('ibase_execute');

        if (count($args) == 0) {
            $result = $function->invoke($this->sth);
        } else {
            array_unshift($args, $this->sth);
            $result = $function->invokeArgs($args);
        }


хрень с eval ещё большее уродство
8 апр 19, 20:34    [21856467]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
я вместо reflection использовал call_user_func_array
после выхода 5ки сделал себе маленьку библитечку и даже не вспоминал как оно там внутрях работает
8 апр 19, 20:43    [21856473]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

мне не нравится когда хендл перемешан с параметрами в одном массиве. Кстати да call_user_func_array наверное подешевле будет
8 апр 19, 20:46    [21856475]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Симонов Денис
да всё очень просто в PHP 8.0 (следующая за 7.4) решили переместить ibase_ расширение в PECL, потому что хендлы не потокобезопасные. Оно вроде как ничего, так как хендл соединения не выходит за пределы работающего скрипта, за исключением использования функции ibase_wait_event

посмотрел, с точки зрения разработчиков ядра пыха перенос в pecl выглядит логичным
да для тех кто пользуется неприятно, но тем не менее логично
8 апр 19, 20:53    [21856478]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Симонов Денис
мне не нравится когда хендл перемешан с параметрами в одном массиве.

ну не перемешаны, порядок все таки важен

с одной стороны да, "не аккуратненько как-то", с другой стороны, а не пох ли, все равно в коллфреме все параметры друг за дружкой лягут
8 апр 19, 20:58    [21856481]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

кстати посмотрел в новом коде тоже используется call_user_func_array.

Тут неаккуратно со многих позиций. В массив аргументов включается хендл 1 элементом, теперь если надо использовать этот массив дальше, то сразу после вызова ibase_execute, его надо удалить хендл из массива. А ещё массив и по ссылке может быть передан.
8 апр 19, 21:10    [21856487]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6111
Dimitry Sibiryakov
PHP изначально был ещё одним странным языком для генерации HTML. Назачем его ещё
поддерживают и куда-то развивают - непонятно в принципе.
Ну он был как бы не первым <языком для генерации HTML>. Да и на него проще переходить с С-лайк
8 апр 19, 21:43    [21856505]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Симонов Денис
В массив аргументов включается хендл 1 элементом, теперь если надо использовать этот массив дальше, то сразу после вызова ibase_execute, его надо удалить хендл из массива.

сделай на временной копии если так нужно
{
    $tmp = $params;
    array_unshift($tmp, $this->stmt);
    call_user_func_array("ibase_execute", $tmp);
    ...


А ещё массив и по ссылке может быть передан.

начиная с 5.0 передача по ссылке типа
$smt->execute(&$params)
мягко говоря не приветствуется
если параметр необходимо передать по ссылке, то это указывается в объявлении функции, иначе ссзб
9 апр 19, 10:09    [21856777]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

так речь и идёт про передачу по ссылке, которая указывается которое указывается в объявлении функции. Короче это попытка эмуляции PDO методов bindParam, bindValue. Первый связывает по ссылке, второй по значению.

Я в своей реализации все эти фиговины уже обошёл, и не спрашиваю как это сделать. Т.е. когда в своём коде вызываешь обёртку, то вроде всё нормально, но внутрях обёртки ужас, потому что функция ibase_execute изначально сделана неудобной. Собственно это расширение сделано вполне себе в стиле PHP 3, PHP 4 когда параметры у функций были в фиг знает в каком порядке.
9 апр 19, 10:55    [21856846]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 536
Симонов Денис
я во внутренностях PDO немного разбираюсь. Даже багу там поправил. Ещё там разбирается Dorin Marcoci

Вот вдвоем и тащите кольцо в Мордовию.

Группа поддержки вроде тоже вырисовывается.

:))
9 апр 19, 13:38    [21857094]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
автор
кто-нибудь разбирался или разбирается в начинке PHP-драйвере Firebird

идеальный вариант, но мне кажется достаточно связаться с тем, кто в курсе внутренности расширений php, без привязки к ibase
9 апр 19, 13:44    [21857107]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

да оно описано вот тут http://www.phpinternalsbook.com
9 апр 19, 13:57    [21857134]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Коваленко Дмитрий,

Дим, ну хорош издеваться. Ты внутреннюю начинку всего этого видел?
Это надо очень много времени. Одно дело мелкий баг поправить, совсем другое переписать это расширение почти с нуля.
9 апр 19, 14:01    [21857140]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Симонов Денис
да оно описано вот тут http://www.phpinternalsbook.com

согласись, знать где лежит описание и даже почитать его - не одно и то же что работать с этим постоянно, чтобы не лезть туда каждому чиху, чтобы быть в курсе различий 5.x vs 7.x а теперь уже и 8.х
9 апр 19, 14:18    [21857167]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 536
Симонов Денис
Дим, ну хорош издеваться. Ты внутреннюю начинку всего этого видел?

Нет, и не тянет. У меня и так нервы расштаны.

Симонов Денис
Это надо очень много времени. Одно дело мелкий баг поправить, совсем другое переписать это расширение почти с нуля.

"Нормальный герои всегда идут в обход"
9 апр 19, 14:28    [21857185]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
Дегтярев Евгений,

так ты заняться решил?
Вообще-то связаться с разработчика пыха нет никаких проблем, но разжёвывать они ничего не будут.
Конкретная проблема ibase_ драйвера обозначена. Собственно ты сам читал переписку.
На самом деле в переписке говорится даже о двух проблемах. Вторая заключается в том, что это расширение
не кому поддерживать, чтобы отслеживать все изменения в ядре пыха.
9 апр 19, 15:04    [21857269]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
Симонов Денис,

> так ты заняться решил?

чур меня

зы
мне не интересно
код, лазающий в фб, переехал из пыха в другое место еще до миграции на семерку, ибо фб (классик) и пых ниразу не сладкая парочка
9 апр 19, 17:26    [21857494]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1049
А чё там несладкого? Поясните-ка. У нас лет пять на FB 2.5классик в связке с PHP5 некоторые сервисы прожили нормально.
(Сейчас уже на FB3супер+PHP7 переехали)
9 апр 19, 17:41    [21857524]     Ответить | Цитировать Сообщить модератору
 Re: Кто разбирается во "внутренностях" PHP драйвере?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1531
o_v_a,

охотно верю, до определенного момента тоже работало
пула соединений в пхп нет и установка нового соединения к нагруженному классику на каждый чих слишком накладно
9 апр 19, 17:51    [21857563]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Firebird, InterBase Ответить