powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кто разбирается во "внутренностях" PHP драйвере?
25 сообщений из 34, страница 1 из 2
Кто разбирается во "внутренностях" PHP драйвере?
    #39796272
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

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

With best regards,
Alexey Kovyazin
HQbird www.ib-aid.com
Техподдержка www.ibase.ru
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39796361
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kovyazin,

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

Или речь про ibase_* драйвер который в PHP 8.0 решили убрать?
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798279
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798284
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишут, пишут...
конгресс, немцы какие-то...
голова пухнет!
(С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798285
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PHP изначально был ещё одним странным языком для генерации HTML. Назачем его ещё
поддерживают и куда-то развивают - непонятно в принципе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798286
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это стильно, модно, молодёжно! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798300
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o_v_a,

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

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

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

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

Во-вторых даже имеющиеся возможности PDO сделаны не до конца, так функция getColumnMeta не реализована вовсе. Параметры внутри реализованы тоже так себе: по возможности внутрях всё переводится в текст и меняется тип параметра, что уничтожает сведения о предыдущем значении типа. Я это понял когда на выходных прикручивал возможность передачи BOOLEAN в качестве параметра.
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798308
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто любопытно: про драйвер к LUA уже все забыли или кто-то ещё его пилит?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798320
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.04.2019 17:18, Dimitry Sibiryakov пишет:
> Чисто любопытно: про драйвер к LUA уже все забыли или кто-то ещё его пилит?

еретики!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798396
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPHP изначально был ещё одним странным языком для генерации HTML. Назачем его ещё
поддерживают и куда-то развивают - непонятно в принципе.

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

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

стильно модно молодежно это nodejs ))
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798397
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисОчень неприятный момент с тем что параметры в подготовленный запрос можно передавать, только как переменное количество параметров. Крайне уродливый код выходит.
не понял о чем ты
??
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798400
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

да вот про это

Код: php
1.
ibase_execute ( resource $query [, mixed $... ] ) : resource



нет чтобы

Код: php
1.
ibase_execute ( resource $query, array $params = []) : resource
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798401
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сложно судить почему сделали так а ни эдак, но я не вижу в этом проблемы, один раз обернул и забыл
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798403
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
поясните откуда весь этот кипишь пошел?
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798404
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

да всё очень просто в PHP 8.0 (следующая за 7.4) решили переместить ibase_ расширение в PECL, потому что хендлы не потокобезопасные. Оно вроде как ничего, так как хендл соединения не выходит за пределы работающего скрипта, за исключением использования функции ibase_wait_event
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798406
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгенийсложно судить почему сделали так а ни эдак, но я не вижу в этом проблемы, один раз обернул и забыл

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

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
        $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 ещё большее уродство
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798409
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вместо reflection использовал call_user_func_array
после выхода 5ки сделал себе маленьку библитечку и даже не вспоминал как оно там внутрях работает
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798411
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

мне не нравится когда хендл перемешан с параметрами в одном массиве. Кстати да call_user_func_array наверное подешевле будет
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798414
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисда всё очень просто в PHP 8.0 (следующая за 7.4) решили переместить ibase_ расширение в PECL, потому что хендлы не потокобезопасные. Оно вроде как ничего, так как хендл соединения не выходит за пределы работающего скрипта, за исключением использования функции ibase_wait_event
посмотрел, с точки зрения разработчиков ядра пыха перенос в pecl выглядит логичным
да для тех кто пользуется неприятно, но тем не менее логично
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798416
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисмне не нравится когда хендл перемешан с параметрами в одном массиве.
ну не перемешаны, порядок все таки важен

с одной стороны да, "не аккуратненько как-то", с другой стороны, а не пох ли, все равно в коллфреме все параметры друг за дружкой лягут
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798418
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

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

Тут неаккуратно со многих позиций. В массив аргументов включается хендл 1 элементом, теперь если надо использовать этот массив дальше, то сразу после вызова ibase_execute, его надо удалить хендл из массива. А ещё массив и по ссылке может быть передан.
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798424
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPHP изначально был ещё одним странным языком для генерации HTML. Назачем его ещё
поддерживают и куда-то развивают - непонятно в принципе.
Ну он был как бы не первым <языком для генерации HTML>. Да и на него проще переходить с С-лайк
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798564
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВ массив аргументов включается хендл 1 элементом, теперь если надо использовать этот массив дальше, то сразу после вызова ibase_execute, его надо удалить хендл из массива.
сделай на временной копии если так нужно
Код: php
1.
2.
3.
4.
5.
{
    $tmp = $params;
    array_unshift($tmp, $this->stmt);
    call_user_func_array("ibase_execute", $tmp);
    ...



А ещё массив и по ссылке может быть передан.
начиная с 5.0 передача по ссылке типа
Код: php
1.
$smt->execute(&$params)

мягко говоря не приветствуется
если параметр необходимо передать по ссылке, то это указывается в объявлении функции, иначе ссзб
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798599
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

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

Я в своей реализации все эти фиговины уже обошёл, и не спрашиваю как это сделать. Т.е. когда в своём коде вызываешь обёртку, то вроде всё нормально, но внутрях обёртки ужас, потому что функция ibase_execute изначально сделана неудобной. Собственно это расширение сделано вполне себе в стиле PHP 3, PHP 4 когда параметры у функций были в фиг знает в каком порядке.
...
Рейтинг: 0 / 0
Кто разбирается во "внутренностях" PHP драйвере?
    #39798741
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денися во внутренностях PDO немного разбираюсь. Даже багу там поправил. Ещё там разбирается "Dorin Marcoci"

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

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

:))
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кто разбирается во "внутренностях" PHP драйвере?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]