нужна помощь в компиляции php_oci8.dll под win32

trustno1

Новичок
нужна помощь в компиляции php_oci8.dll под win32

Скачал исходники php, мне нужно скомпилировать php_oci8.dll. Установил Visual Studio 7, открыл файл проекта oci8.dsp. Начал компилировать, а мне выдается куча ошибок при компиляции - около 100! В основном это syntax error. Я не силен в VS, может кто-нибудь может помочь?
 

trustno1

Новичок
Автор оригинала: tony2001
зачем ?
т.к. в 5.0.4 есть ошибка, при перезагрузке БД, не удается подконнектиться к ораклу без перезагрузки веб-сервера (пересоздания сессий, которые создает php_oci8). Хочется перекомпилировать с поддержкой oci_ping(), т.к. постоянная перезагрузка апаче не устраивает
 

tony2001

TeaM PHPClub
не перезагружайте БД.
либо при перезагрузке БД перегружайте апач (раз уж вы базу перегружаете).
либо смените ОС на сервере.
 

trustno1

Новичок
Автор оригинала: tony2001
не перезагружайте БД.
либо при перезагрузке БД перегружайте апач (раз уж вы базу перегружаете).
либо смените ОС на сервере.
не перегружать БД невозможно! Контора большая и ответственные за перезагрузку БД не обязаны и не будут мне сообщать, когда они рестартят БД (а это происходит до 1 раза в день). Почему нельзя воспользоваться компилированием с включением oci_ping() - пусть даже это снизит произвоительность? Или подскажите пожалуйста другие, но автоматические методы борьбы с этой ошибкой..
 

tony2001

TeaM PHPClub
дать "перезагружающим БД" доступ к апачу.
либо (еще раз) смените ОС на сервере.
 

trustno1

Новичок
опять же ни то, ни то невозможно в силу внутренней политики конторы. Я бы с удовольствием это сделал и не парился. Но это нельзя сделать :(
Все же интересно, а чем плох метод с раскомментированием oci_ping() ? Он как раз по-моему решает эту проблему. Или тут дело в какой-то внутренней политике PHP-Team?
 

tony2001

TeaM PHPClub
плох тем, что надо лечить не симптомы, а болезнь.
oci_ping() лечит симптом, а надо переписывать весь connection handling algorithm.
я этим сейчас и занят.
 

trustno1

Новичок
Я полностью согласен, но пока лекарства окончательного нет, можно же использовать альтернативные меры. Просто мой проект не примут для использования, если будет необходимо постоянно выполнять какие-то ручные операции (как то, перезагрузка Апаче). Те, кто принимают проект никак не связаны с теми, кто перезагружает Оракл и по большому счету им это не важно, т.к. должно всё должно работать 24 часа в сутки без перерывов и контроля. Переустановить ОС тоже нельзя.
Я понимаю, что это неправильно, но пока существует такая ситуация и пока не переписан connection handling, очень прошу помочь на время вылечить симптом ORA-24327.

-~{}~ 31.05.05 12:48:

tony2001, на вас последняя надежда. Не дадите рекомендаций, может быть, каких-нибудь ссылок на инструкции по компиляции php_oci8.dll? Может быть у вас уже есть готовая библиотека (с включенным oci_ping()) для тестовой эксплуатации?
Буду очень благодарен за любую помощь.
 

trustno1

Новичок
Автор оригинала: tony2001
нет, поскольку я не использую Win32.
жаль...
а не подскажите, сколько примерно ждать новой переписанной версии php_oci8.dll, где эта ситуация будет пофиксена?

-~{}~ 31.05.05 14:10:

tony2001, еще вопрос если можно. Линкеру требуются доп. файлы: php5ts.lib, oci.lib, odbc32.lib, odbccp32.lib, но в архиве с исходниками PHP этих файлов нет. Где их можно взять?
 

trustno1

Новичок
Автор оригинала: tony2001
http://www.php.net/manual/en/install.windows.building.php - тут написано.
спасибо, я это прочитал, всё сделал как там. resolv.lib скомпилился, дальше я стал компилить php_oci8.dll (сам php компилить не стал). При этом из необходимых для линкера файлов в наличии был только oci.lib. php5ts.lib я взял из обычного установочного архива PHP5, а требуемые odbc32.lib, odbccp32.lib - из Platform SDK MS VS. Проверил специально все пути, либы сложил в одно место. Но при билде все равно выскакивает сотня с лишним синтаксических ошибок. Понятно, что дело не в коде. Но в чём? Раньше помню при компиляции было похожее, если MS VS не удавалось найти соответствующие *.lib файлы...
Чую, надо лезть на какой-нить форум по MS VS :(

вот выдержка из билд-лога:
Код:
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(127) : error C2061: syntax error : identifier 'oci_connection'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(129) : error C2143: syntax error : missing '{' before '*'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(130) : error C2143: syntax error : missing '{' before '*'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(139) : error C2059: syntax error : '}'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(142) : error C2061: syntax error : identifier 'OCIBind'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(143) : error C2040: 'zval' : 'zval *' differs in levels of indirection from '_zval_struct'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(144) : error C2143: syntax error : missing '{' before '*'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(145) : error C2143: syntax error : missing '{' before '*'
d:\phpbulid\php-5.0.4\ext\oci8\php_oci8.h(148) : error C2059: syntax error : '}'
 

trustno1

Новичок
Спасибо, tony2001, именно так и оказалось. Скомпилил, теперь все работает без перезагрузки апача!

-~{}~ 18.06.05 08:20:

Все хорошо, но библиотека скомпилилась без поддержки коллекций.. Хотя клиентская часть их вроде поддерживает, по-крайней мере процедуры с коллекциями отрабатывают через разных SQL-клиентов.
Может надо было включить какой-нить дополнительный флаг при компиляции?
 
Сверху