LINUX.ORG.RU

PHP 4.4


0

0

Вышел новый стабильный релиз PHP. Исправлено несколько серьёзных проблем с выделением памяти, а также большое количество мелких ошибок. Разработчики настоятельно рекомендуют обновиться.

Changelog: http://www.php.net/ChangeLog-4.php#4.4.0
Download: http://www.php.net/downloads.php#v4

>>> Подробности

★★★★★

Проверено: Dimez ()
Ответ на: комментарий от StDog

>Ты только начала абзацев читаешь или не шаришь во внутренностях систем, что пропускаешь суть того что я тебе толдычу?

Я тебе реальный пример привел. Именно так и было. Пришли ребята и попросили оценить, во сколько им это выльется.

>золотые слова. >если ты нихрена не знаешь о сабже, то что ты приперся суда? с "традиционным подходмом" тя пошлют в любом более менее приличном месте и за дело. То что на пхп пишут много много хлама говорит лишь о массовости ( и это здорово ), все остальное лишь твоя неграмотность в предмете.

Еще раз. Я про AdoDB не говорю. Я говорю, что если бы вместо mysql_query сразу (если бы автор просто подумал) было бы что-то вроде JDBC (ладно, пусть AdoDB, PEAR, whatever), то проблем было бы меньше. Только и всего. Я не пытаюсь тут доказать какие-то всеобщие утверждения.

WFrag ★★★★
()
Ответ на: комментарий от Sun-ch

> Пускай хреновый, но зато реальный.
восемь пудов свинца под луной....

StDog
()
Ответ на: комментарий от WFrag

>>ref_cursors
>Можно через PreparedStatement.setObject & ResultSet протащить.
у mysql? не тормози.

>>array bind
>Не знаю такого.
параметер к функции array

>>insert into .. returning
>Ну, например, интерфейс PreparedStatement.executeQuery() подходит под этот случай.
можно подробней ? у mysql принципиально нет такой кострукции.

anonymous
()
Ответ на: комментарий от WFrag

> Хорошо. PHP подход в моем случае - это то, что использует куча лабухов > имея после этого дыры. mysql_query("SELECT * FROM my WHERE ID=".userEnteredId);

куча тупых индусов на яве пишут и не такое.
Те уже сто раз об этом сказали, сто раз тыкнули носом в что и как, а ты все там же...

StDog
()
Ответ на: комментарий от WFrag

> Я тебе реальный пример привел. Именно так и было
Твой реальный пример не в тему. Я тебе рассказывал совсем о другом.

> было бы что-то вроде JDBC (ладно, пусть AdoDB, PEAR, whatever), то проблем было бы меньше
Тебе русским языком и говорят, что есть PEAR, ADOdb. Русский язык понимаешь?

StDog
()
Ответ на: комментарий от StDog

>Он тебе совсем о другом.

О чем?

PreparedStatement st = con.prepareStatement("INSERT INTO my(t) VALUES ('bla-bla-bla') RETURNING @SCOPE_IDENTITY"); ResultSet rs = st.executeQuery(); rs.next(); int id = rs.getInteger(1);

Оно? Или я что-то глобально не понял (на самом деле, в JDBC 3 добавили специальный)?

>>В любом случае, никто не мешает сделать систему работы с базой расширяемой. Базовые функции-то все равно большей частью общие.

>Очнись, ты гонишь. Ей богу....

Ну как же? Вот глянь интерфес PreparedStatement-а. Он общий для всех баз. Что в нем не так? Я согласен, что он покрывает далеко не все, но ведь значительную-то часть функциональности он покрывает?

WFrag ★★★★
()
Ответ на: комментарий от anonymous

Блин. Я про JDBC говорю :)

Короче, тут все перепутано. :) Я лишь сказал, что можно сделать некий универсальный интерфес, который покроет значительную часть функциональности доступа к базе. В качестве примера привел JDBC.

WFrag ★★★★
()
Ответ на: комментарий от StDog

>Тебе русским языком и говорят, что есть PEAR, ADOdb. Русский язык понимаешь?

Хорошо, я тебе повторю, что я имел ввиду. Я не спорю, что есть такие фишки. Утверждение было: "Если бы сразу были эти фишки вместо ad hoc подхода, то проблем было бы меньше". Что не так?

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>Оно? Или я что-то глобально не понял (на самом деле, в JDBC 3 добавили специальный)?

В скобочках я недописал :) В JDBC 3 добавили функциональность для получения ключа после вставки, т.е этот пример записался бы не так. Хотя RETURNING может возвращать и не только ключи, конечно.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

> Оно? Или я что-то глобально не понял
Да, ты много что глобальное не понял.

> Ну как же? Вот глянь интерфес PreparedStatement-а. Он общий для всех баз. Что в нем не так?
Вот про таких как ты и говорят жабабыдлокодер. Ты чтонибудь кроме этого препаред стринг видел?
Пример сходу. Модель вложенных множеств знаешь? Nested Set которое. Давай изобрази мне, как ты ее одиним и тем же препаредстрингом реалзиуешь выбор ветви в майэскуэле третьей версии и в оракеле?

StDog
()
Ответ на: комментарий от anonymous

>a. делаешь find/replace mysql_connect на твою обертку >b. говоришь php что mysql_connect() это твоя функция, а не стандартная >c. просто собираешь без --with-mysql и обертываещь все функци mysql_*

>и еще пара десятков вариантов работы на 5 иминут

Не, пересобирать вроде ничего нельзя было. Там Zend 5 использовался.

>и еще пара десятков вариантов работы на 5 иминут

Угу. Реально все равно больше выйдет, это я как пессимист уверен :)

WFrag ★★★★
()
Ответ на: комментарий от WFrag

> Хорошо, я тебе повторю, что я имел ввиду. Я не спорю, что есть такие фишки. Утверждение было: "Если бы сразу были эти фишки вместо ad hoc подхода, то проблем было бы меньше". Что не так?

Пеар есть сразу из коробки. ADOdb можно слить всегда. Распределенность библиотек для пхп в отличии от жабы есть лишь потому, что жабу делает одна компания а пхп делают всем миром. То что библиотеки раскиданы, это еще не значит, что их нет.

StDog
()
Ответ на: комментарий от StDog

>Да, ты много что глобальное не понял.

Что именно? Я что, зря пример написал что-ли или ты только языком болтать мастер. Давай уже, аргументируй.

>Вот про таких как ты и говорят жабабыдлокодер. Ты чтонибудь кроме этого препаред стринг видел?

Видел.

>Пример сходу. Модель вложенных множеств знаешь? Nested Set которое. Давай изобрази мне, как ты ее одиним и тем же препаредстрингом реалзиуешь выбор ветви в майэскуэле третьей версии и в оракеле?

Ну ты же не будешь утверждать, что эта функциональность используется в 100% случаев? Я же не говорил, что всю возможную функциональность можно запихать в один интерфейс. Я специально делал оговорки, что только часть (но которой хватит в 80% случаев, хотя это догадка).

WFrag ★★★★
()
Ответ на: комментарий от StDog

>Пеар есть сразу из коробки. ADOdb можно слить всегда. Распределенность библиотек для пхп в отличии от жабы есть лишь потому, что жабу делает одна компания а пхп делают всем миром. То что библиотеки раскиданы, это еще не значит, что их нет.

Да я ничего про это и не говорю! Прочитай, плиз, внимательнее мое утверждение. "Сразу" - имеется ввиду с рождения PHP.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>>и еще пара десятков вариантов работы на 5 иминут
>Угу. Реально все равно больше выйдет, это я как пессимист уверен :)

ок говоришь что ты пессимист и берешь $200 и терпеливо ждешь 15 минут пока пройдет find/replace.

anonymous
()
Ответ на: комментарий от StDog

>Пример сходу. Модель вложенных множеств знаешь? Nested Set которое. Давай изобрази мне, как ты ее одиним и тем же препаредстрингом реалзиуешь выбор ветви в майэскуэле третьей версии и в оракеле?

Код напиши на чем-нибудь. Я такое не писал, могу что-нибудь не то предложить.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>Код напиши на чем-нибудь. Я такое не писал, могу что-нибудь не то предложить.

select lpad(' ',2*(level-1)) || to_char(child) s
from test_connect_by
start with parent is null
connect by prior child = parent;

anonymous
()
Ответ на: комментарий от WFrag

> "Сразу" - имеется ввиду с рождения PHP

Пеар идет в составе пхп уже с самых ранних четвертых версий.
А с рождения все умеет только срать и сосать.

StDog
()
Ответ на: комментарий от WFrag

> Ну ты же не будешь утверждать, что эта функциональность используется в 100% случаев? Я же не говорил, что всю возможную функциональность можно запихать в один интерфейс. Я специально делал оговорки, что только часть (но которой хватит в 80% случаев, хотя это догадка).

Во первых ты именно так и говорил. Во вторых именно из-за невозможности запихнуть незапихуемое в один интерфейс тебе бедолаги и рассказнно было, что единые интерфейсы не есть гуд

StDog
()
Ответ на: комментарий от anonymous

>select lpad(' ',2*(level-1)) || to_char(child) s >from test_connect_by >start with parent is null >connect by prior child = parent;

А что, результат в ResultSet точно никак не влазит?

Я же не говорил, что сам SQL запрос должен быть одинаков для всех баз, я имел ввиду только интерфейс к БД. Понятно, что если приложение использует специфичные фичи, то на другую базу простой заменой кода коннекта к БД не обойдешься.

Но в любом случае минуса от единого интерфейса я не вижу. А я спорил именно с этим - единый интерфейс vs mysuperbs_query

WFrag ★★★★
()
Ответ на: комментарий от WFrag

> Код напиши на чем-нибудь. Я такое не писал, могу что-нибудь не то предложить.
Если ты даже не знаешь что такое модель вложенных множеств, то с тобой разговаривать пока не о чем. Всмысле в плане релизаций моделей в реляционных базах.

StDog
()
Ответ на: комментарий от StDog

>Если ты даже не знаешь что такое модель вложенных множеств, то с тобой разговаривать пока не о чем. Всмысле в плане релизаций моделей в реляционных базах.

См. выше.

WFrag ★★★★
()
Ответ на: комментарий от StDog

>Если ты даже не знаешь что такое модель вложенных множеств, то с тобой разговаривать пока не о чем. Всмысле в плане релизаций моделей в реляционных базах.

Нет, просто я не понял, каким местом это не влазит в единый интерфейс.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

> >Во первых ты именно так и говорил.
> Где?

там.
ты явно дальше верхушки абзаца не вникаешь.

Извини, я не буду больше на тебя тратить время, пойду лучше постреляю нигеров в СА ;)

StDog
()
Ответ на: комментарий от StDog

>там. >ты явно дальше верхушки абзаца не вникаешь.

>Извини, я не буду больше на тебя тратить время, пойду лучше постреляю нигеров в СА ;)

ОК. В качестве того, что ты облажался приведу свои слова :)

>В любом случае, никто не мешает сделать систему работы с базой расширяемой. Базовые функции-то все равно большей частью общие.

Видишь? Большей частью (хотя спорно, но тем не менее я не говорил "все").

>Ну как же? Вот глянь интерфес PreparedStatement-а. Он общий для всех баз. Что в нем не так? Я согласен, что он покрывает далеко не все, но ведь значительную-то часть функциональности он покрывает?

Заметил? Значительную. Тоже, конечно, спорно, но я не говорил "всю".

WFrag ★★★★
()
Ответ на: комментарий от WFrag

На самом деле, проблема, наверное, в том, что я зря сказал "систему работы с базой". Это была моя ошибка.

Я, вообще-то, весь топик говорил именно про интерфейс библиотеки работы с базой (PEAR, "mysql_query", JDBC), а не про функции самой базы (про которые, видимо, говорил ты).

WFrag ★★★★
()
Ответ на: комментарий от WFrag

Да забей на них, тут уже сказали "проблема, конечно, не в самом языке, а в отсутсвие систематического образования и самое главное желания его получать" это сказывается и на манере общения.

ed ★★
()
Ответ на: комментарий от StDog

А какое это имеет отношение? Опровергните: "бОльшая часть работы с БД из приложения, написанного на некоем внешнем языке, покрывается функциями: connect(), disconnect(), begin_transaction(), end_transaction(), commit(), rollback(), prepare_statement(), bind_params(), execute_query(), get_cursor(), cursor_next(), data_from_cursor() (в Perl DBI последние три объединены, возможно это к лучшему), cursor_at_end()"

Eldhenn
()
Ответ на: комментарий от Eldhenn

2Eldhenn

а теперь посмори оракловый OCI и попробуй постичь то что твой список не покрывает и трети OCI. а дальше попробуй все же сформулировать ради чего я должен использовать ущербный DBI если проблему миграции с оракла на db2 он все равно не решит.

anonymous
()
Ответ на: комментарий от Sun-ch

> Если перевести сокращение PHP, то получится "Личные домашние страницы". Ключевое слово "домашние".

Оно ещё переводится как "парковочные". А понятие "личная страница" так
же применима к странице фирмы и даже корпорации. А даже если и
"личные домашние", им ничего не мешало вырасти в "безличные
корпоративные". Жаба тоже планировалась изначально совсем для других
целей.

anonymous
()
Ответ на: комментарий от StDog

> Или ты думаешь с помощью JSP нельзя написать достаточно стремный код?

Достаточно взглянуть на код ЛОР'a. Или лучше нет, не смотрите, чтоб
инфаркт не случился от шока ;)

anonymous
()
Ответ на: комментарий от anonymous

>Достаточно взглянуть на код ЛОР'a. Или лучше нет, не смотрите, чтоб инфаркт не случился от шока ;)

Там все плохо, да? :)

А вообще, после кода индусов ничего не страшно.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>Там все плохо, да? :)

я отсюда вижу, что все там хорошо, продвинутый такой MVC фреймворк юзается :) индусов то хоть на фреймворк сажают, а тут даже пхписты отдыхают.

anonymous
()
Ответ на: комментарий от Eldhenn

> Поэтому надо использовать Perl и DBD::mysql :)

По какому "поэтому"? Чем оно лучше PEAR::DB? PEAR идёт в одном пакете с
php c незапамятных времён. DBD::mysql всю жизнь отдельно ставилось...

Во, блин, новое поколение пионеров пошло... С детства им кто-то внушил,
что php - это не круто, и изучать его необязательно. Это, конечно,
простительно, но лишь до тех пор, пока такие вот пионеры не начинают
спорить на тему качества языка php. На php, значит, пишут ламеры, а
как называются те, кто обсуждает php, не зная его? ;) PEAR они не знают,
про AdoDB вообще не слыхали никогда. Хрена ли вы рот свой открываете
тогда?

anonymous
()
Ответ на: комментарий от WFrag

2 WFrag

Дружеский совет, если позволите: вы теряется время :) пытаясь объяснить что-либо фанатам PHP. Это лишнее :)

Alter ★★
()
Ответ на: комментарий от anonymous

Ну дык вводится вполне определенная метрика - количество сообщений о дырах в том или ином софте на LOR. По этому показателю и производится сравнение :)

И, кстати, обсуждалось не качество языка в целом, а качество отдельно взятых решений. По которым мне никто внятную аргументацию так и не предоставил. Были пальцы, Oracle-ы, ножи с маслом, а вот аргументации - мало. И почему-то не по тем темам - быстро ушли на обсуждения непонятно чего.

Тема дня - почему в PHP-шных поделках так часто бывают SQL injections. Была (неявно) предложена теория - из-за того, что на ранних этапах развития PHP было принято ошибочное (мой тезис) решение. Которое привело к текущей ситуации. Также было отмечено, что на текущий момент проблема уже скорее в обучении - с чем я не могу не согласиться. Но (мое мнение) именно возникновению проблемы мы и обязаны первоначальному решению.

Вот. Это аргументация. Ветку про ad hoc/"универсальная" библиотека для работы с СУБД я, пожалуй, пересказывать не буду. Там, похоже, проблема была в том, что стороны спорили о разных вещах.

А в ответ мне почему-то постоянно летят какие-то оскорбления и наезды не по теме (да, я тоже не белый и пушистый :) ). :( Вместо того, чтобы аргументировано меня опровергнуть (и я бы ушел пристыженным).

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

WFrag ★★★★
()
Ответ на: комментарий от Alter

>Дружеский совет, если позволите: вы теряется время :) пытаясь объяснить что-либо фанатам PHP. Это лишнее :)

Да я знаю. Скоро в отпуск собираюсь - надо заранее план по флейму выполнить :))

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>А в ответ мне почему-то постоянно летят какие-то оскорбления и наезды не по теме

Дык знающее поймут.. остальным за радость хай поднять :)

P.S.
План по флейму :) Хм.. это мне в голову не приходило :)

Alter ★★
()
Ответ на: комментарий от WFrag

>А в ответ мне почему-то постоянно летят какие-то оскорбления и наезды не по теме (да, я тоже не белый и пушистый :) ).

Предложили бы показать что-нибудь в духе хотя ты этого - http://db.apache.org/ojb/ на PHP :)

Особенно в плане поддержки full featured ODMG 3.0 compliant API.

:D

Alter ★★
()
Ответ на: комментарий от Alter

> Предложили бы показать что-нибудь в духе хотя ты этого - http://db.apache.org/ojb/ на PHP :)

Для начала предложите мне на java что-либо хотя бы отдалённо
напоминающее функциональность фрэймворка Roadsend Sitemanager.
http://www.roadsend.com/home/index.php?pageID=smphp

anonymous
()

Короче, это я сам дурак :) Погнался за новыми версиями :)

Поставил только что вышедший оракл(10.2.0.1) и попытался скомпилить php(4.4.0/5.0.4) с поддержкой этого оракла.

Скомпилился он отлично, но вот выполняться из апача - никак...

Deleted
()
Ответ на: комментарий от WFrag

> вводится вполне определенная метрика - количество сообщений о дырах в том или ином софте на LOR. По этому показателю и производится сравнение
:)

А говорил, что с математикой дружишь. Бегом в третий класс пропорции
изучать.

> И, кстати, обсуждалось не качество языка в целом, а качество отдельно взятых решений.

Взятых кем?

> Тема дня - почему в PHP-шных поделках так часто бывают SQL injections.

Ну, а тебя-то как это волнует/задевает? Ты же грамотный программер, и
если бы пришлось писать на php, наверное, додумался бы использовать
хотя бы PEAR::DB для работы с базой? Если да, то чего зря на язык
наезжать? Я не понимаю ход твоей мысли.

> из-за того, что на ранних этапах развития PHP было принято ошибочное (мой тезис) решение.

Там был и есть предохранитель от таких проблем - magic_quotes_gpc
в конфиге, который по умолчанию включен. Так что наезд на
пионеров-ламеров не принимается. Презервативом их обеспечили. А если
они решили его не одевать, то это их личная проблема.

anonymous
()
Ответ на: комментарий от Alter

> И чем тут должен быть удивлен ?

Грамотной системой, заточенной под быструю разработку веб-приложений.

> рассказать про реализацию Struts

Его ещё кто-то использует? Проблем от него больше, чем радости.

> Ты бы лучше сцылку на object-relational mapping на PHP привел, что-ли.

Лови. http://www.wiki.cc/php/Object_Relational_Mapping

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.