Как стать автором
Обновить

Комментарии 16

Открыл статью, ожидая увидеть изучение протокола общения с БД и его портирование под yii2 в виде пакета, но увы. Статья ну совсем для «самых маленьких», может стоило это указать?
Создаем файл test-fb.php в рабочем каталоге фреймворка YII2 D:\xampp\htdocs\yii\, в нем ишем код:

Зачем? Чем вас канонический php -m не устроил (в интерпритации под окна):
php -m | find "pdo"
Согласен, совсем уж для «самых маленьких», часть касаемая настройки среды и подключения драйвера можно было смело опустить.
То что в делфи использовался win1251 не обязывает использовать его в web, используйте utf8, сэкономите время в будущем.

зы
с чем связан переезд именно на пхп?
Работа с fb через php не очень хорошая идея, в случае нагрузки, конечно. В fb создание соединения, особенно для classic, не дешево и под нагрузкой это будет съедать время + доп нагрузка на сервер БД. Предпочтительнее эту работу доверить сервису с возможностью поддерживать постоянное соединение с БД. Сервис можно написать на том же делфи, пусть он отдает данные по рест, либо напрямую в браузер либо через php.
Возможно потом, на определенном этапе, просто переедут на MySQL или PostgreSQL.
Вы абсолютно правы!
Я не зря написал в начале статьи, что предполагается постепенный переход. Более того, переход будет сделан на MySQL. Причина простая — самые дешевые хостинги дают, как правило, только MySQL.
Спрашивается, почему бы сразу не перезалить всю БД на MySQL и не извращаться.
К сожалению это непросто т.к. в Firebird я активно использую хранимые процедуры (как и лбой другой дельфист). Я зык хранимых процедур у MySQL и FB разный, хоть и похожий. Переписать каждую процедуру тоже требуется время, а это означает, что пока буду переписывать, необходимо останавливать всю работу. А еще и отлаживать их надо. Одному перелопатить сотню процедур, это не так быстро. Да и переписывать их на MySQL нет никакого смысла, тут лучше делать обработку в контроллерах YII2.
А так, как описано в статье — можно на первое время уже выдать результат работы некоторых форм (терминах дельфи) хотя бы в режиме просмотра в web.
конечно не обязывает, но моя БД была под дельфи еще со времен «царя гороха» и кодировка win1251. Конечно, в проектах на web я использую только utf8, это гораздо удобнее.
тоже вариант, не спорю
А про «самых маленьких» и указано, см. п. 3 в «Замечании»
а Вы пробовали сравнить результат своего и моего варианта?
в первом случае выводит
D:\xampp\php>php -m | find "pdo"
pdo_mysql
pdo_sqlite

в браузере:
URL: http://localhost/yii/test-fb.php
firebird
mysql
odbc
sqlite

Кстати, вот вопрос, почему так? php.exe запускается один и тот же, из каталога D:\xampp\php\php.exe, только во втором случае это делает Apache.
А вы пробовали чуть-чуть подумать над смыслом команды? Уберите find «pdo» и выведет все модули…
А если CLI-версия и расширение Apache используют разные php.ini? Над этим подумали?
Я бы задумался над психической уравновешенностью человека, использующего разные версии php для cli/apache/php-fpm при работе с yii2.
Конкретно с Yii, возможно, и так, но в иных ситуациях это может быть полезно — к примеру, если под CLI у вас свои консольные скрипты для административных задач, а под Apache/php-fpm/uWSGI/etc — продакшен для сайтов клиентов, которым нельзя позволять всё то, что позволено вашим скриптам. Более того, если у вас php-fpm или uWSGI, вам может быть крайне полезным заводить пулы/вассалы с разными наборами опций (как минимум), а как максимум — разными php.ini. Так что вариант, предложенный автором, всё же более универсален.
спасибо за поддержку, был бы рейтинг, поставил бы +
Я, конечно, и не думал про CLI, разграничение прав, но идея была в том, что работающий скрипт работает в своем окружении и его работоспособность надо проверять именно в том окружении, в котором потом будет работать весь фреймворк. Будет другой сервер/экземпляр сервера, может будет всё другое.
ну не надо совсем меня считать идиотом. Не иметь большого опыта работы с YII и быть идиотом — разные вещи.
я пробовал и
D:\xampp\php>php -m
и
D:\xampp\php>php -m > 1.txt
и поиск по тексту
и
D:\xampp\php>php -m | find "firebird"
и
D:\xampp\php>php -m | find "f"
Пробовал в лоб указать через ключ -c конкретный конфигурационный файл
D:\xampp\php>php -c php.ini -m | find "f"
ну нету модуля.

Остался один вариант, но возиться с ним не охота. Скорее всего Apache создает свой набор переменных окружения и именно он влияет на подгрузку драйвера. По идее можно сваять скриптик, глянуть переменные и повторить их тупо через runme.bat
«Обратите внимание, после добавленной строки запятой быть не должно т.к. она добавлена в конце массива и наличие запятой при выполнении Composer даст ошибку. Хотя сам PHP и допускает наличие запятой в конце списка элементов массива перед закрывающей скобкой, Composer это не допускает.»

Наверное потому что файл композера это не массив на пхп, а json? :-D

Не думаете?
просто не стал об этом подробно писать. Думаю и так понятно, что это разные вещи. Может Вас в заблуждение ввело слово «Хотя...». На самом деле понятно, что это разные интерпретаторы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории