![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
Возник вопрос: можно ли в PHP скрипте перехватить или просто отследить все вызовы некоторой встроенной функции (file_get_contents(), в частности)? Или можно ли как-нибудь ее переопределить?
Естественно, писать свой модуль для php не хочется, ибо для виртуального хостинга такое решение не работало бы. -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
можно просто написать свою функцию по принципу:
где savefgc() - сохраняет запрос в нужном виде а затем заменить все file_get_contents на myfunc |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
) Но это не переопределит функцию) Это добавит к ней функциональность) А если нужно изменить ее работу) Такое решение не подойдет!
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
dark_religion, окей. тогда измени PHP в исходниках, перекомпилируй и используй измененную версию.
|
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
bars80080, идея состоит в том, что есть уже довольно большой код, написанный различными программистами (cms и пачка плагинов), который постоянно обновляется и дополняется. Вручную всякий раз заменять все вызовы - совсем не интересно, а доверять это автоматике не хочется, ибо она не всегда может себя адекватно повести.
skyboy, я уже рассматривал вариант с модулем для php, но это совершенно непортабельное решение. Хотелось бы найти вариант, который работал бы и в условиях шаред хостинга. -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
так замени один раз. используя шаблон проектирования "Адаптер" реализуешь обертку для функции. И потом меняешь только обертку в одном месте. Тебе же так и предложил bars80080. Или ты к тому, что сторонние программисты про такую функцию-посредник знать-не знают и при любом их(сторонних программистов) лишнем толодвижении придется менять их исходники, заменяя вызываемые функции? |
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
skyboy, именно так. Эти программисты от меня не зависят, я их в глаза не видел и вообще большая часть из них буржуи. Так что менять код не хочется.
-------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
Alex13, а что, если определить интерфейс своей системы? ни в какой известной мне системе, сторонние модули не работают напрямую с памятью ядра, а используют некией функции-составные интерфейса. если возможно, поставь вопрос так, чтоб не было работы с БД/файлами/сокетами напрямую, а только через определенный тобою интерфейс. хотя бы, чтоб вместо обращения к функции напрямую было обращение к "базе функций": типа вместо "fopen($var);" выполнять "library('fopen', array($var))". в таком случае и тебе проще, и система надежнее: проще исправлять несовместимости, расширять функционал, отслеживать вызовы. Конечно, в случае усиленной нагрузки это может сказаться на производительности, но при таком подходе ты сразу забесплатно получаешь систему кеширования резльтатов выполнения фунцкий(особенно актуально для сложных с длительным выполнением).
|
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
skyboy, я наверное невнятно выразился. Есть некий движок, есть набор модулей к нему, разрабатываются они все разными людьми. Разработчиком cms я не являюсь и на внутренние стандарты влиять не могу. Мноя задача состоит в том, чтобы поддерживать сайт на ней. Для отладочных целей мне понадобилось отслеживать вызовы определенного набора встроенных функций и я ищу способ минимальной кровью решить эту задачу.
В любом случае, спасибо зп то, что откликнулись -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 4 Всего: 32 |
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
MuToGeN, оно самое, спасибо!
Жаль только, что идет как стороннее расширение, но за неимением лучшего... -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| PETRUHA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 29.10.2008 Репутация: нет Всего: нет |
||||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
PETRUHA, тоже вариант, но опять требуется ставить малопопулярное расширение.
-------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Не советую использовать runkit в боевых условиях, т.к. он крайне не стабилен. И тем более APD. Хотя для отладки на какой-либо локальной машине, конечно, может подойти.
Как один из вариантов, если это не к спеху, можно дождаться выхода php 5.3 и просто использовать свой неймспейс со своим стандартными функциями. |
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
sTa1kEr, тогда наверное буду ждать.
Ибо безопасностью жертвовать - не дело. Спасибо за совет. -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |