За последние 24 часа нас посетили 18544 программиста и 1639 роботов. Сейчас ищут 1012 программистов ...

Готовое решение: PHPC — PHP Compiler CMF

Тема в разделе "Решения, алгоритмы", создана пользователем Dagdamor, 2 мар 2007.

  1. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    там же просто переименоват функции mysql_ на нужный тебе драйвер и все.
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    pohapecoder
    Не фига подобного.
    Во-первых, не везде одинаковый порядок параметров.
    Во-вторых, в других расширениях может не быть каких-то функций. И наоборот.
     
  3. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    вот я смотрю по коду. там его достаточно немного. и в основном в database.php
    так что если кому-то необходимо другую БД - то почему бы просто не переписать database.php как надо?
    хотя я бы вообще не стал использовать данный "фреймворк" уж больно примитивный.
     
  4. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    Это тоже легко решается. Добавляем какие нибуть префиксы к функциям, пишем свои функции - декораторы,
    откуда вызываем реальные и где порядок аргументов нужный. А несуществующие функции эмулировать можно.
     
  5. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    tenshi
    Сделал бы через драйвер - получил бы очередной клон ZF. ;)
    За ссылку спасибо, сейчас скачаю.

    pohapecoder
    У mysqli_ функций совсем другой синтаксис, результат запроса - объект, а не ресурс, и во все функции нужно дополнительно передавать connection id. Но вообще да, я внес изменения только в один файл - database.php.
    Насчет декораторов и прочего - вы поймите, что я стараюсь сохранять свой "уж больно примитивный" движок простым и внятным, используя все эти дикие паттерны по минимуму. Если вам не нравится - никто не заставляет.
     
  6. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Паттерны и предназначены для того, чтобы делать код, простым, внятным и понятным постальным.
     
  7. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    А коммунизм предназначен для того, чтобы людям счастье принести. Но вот на практике что-то не получается ни разу.
     
  8. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Да, многие неуровновешенные личности любят перебрать с паттернами и сделать кашу, но нам то что от этого?
    Сделать переключалку между php_mysql и php_mysqli достаточно просто, тем более, что у mysqli есть процедурный интерфейс, почти идентичный php_mysql.
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    То, что у нас нервы тоже не железные ;)

    В любом случае, я написал выше, что сразу принял решение поддерживать только одну mysql библиотеку. И выбор я уже сделал в пользу MySQLi. Ну а что доки пришлось написать - оно только к лучшему. Там же не только эта ситуация рассматривается. :)
     
  10. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    Я говорил совсем о другом - если кому-то нужно другую БД не вижу проблем переписать под нее самому же а не автору.
    И вернуть наработки автору, например. В данном случае будет выбор - использовать обычный БД или другую БД для которой переписан database.php.
     
  11. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    tenshi
    Поднял у себя ваш XSLT-пример. Как ни странно, он даже заработал.
    Первые впечатления - "неужели для того, чтобы отобразить 5 простых страниц, обязательно необходим XSL из 600 строк и CSS из 500" ;)
    Чесслово, все то же самое у меня делается намного, намного проще и красивее.

    Поднял аналогичный проектик на PHPC. Сделал только главную страницу, со списком статей - зато все по-честному, с таким же оформлением страницы, с такой же менюшкой наверху, данные выбираются из базы (только у меня это MySQL таблица, а не SQLite). Результаты бенчмарков:

    PHPC:
    XSLT (сборка на стороне клиента):
    XSLT (сборка на стороне сервера, добавил этот вариант просто ради интереса):
    Результат: PHPC уделывает по скорости даже XSLT. :) Хотя разница и небольшая, но все же в пользу моего движка!

    Замерял таким несложным скриптом:

    PHP:
    1. <?php
    2.  
    3. $address="http://xslt/?article/list"; // XSLT example
    4. //$address="http://test/"; // PHPC example
    5.  
    6. $count=100;
    7. $time=microtime(true);
    8.  
    9. $curl=curl_init($address);
    10. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    11. for($index=0; $index<$count; $index++) curl_exec($curl);
    12. curl_close($curl);
    13.  
    14. $time=microtime(true)-$time;
    15. $per=round($time/$count,3);
    16. $time=round($time,3);
    17.  
    18. echo "Тестируемый URL: $address.<br>";
    19. echo "Количество запросов: $count.<br>";
    20. echo "Время работы: $time.<br>";
    21. echo "Среднее время одного запроса: $per.<br>";
    22.  
    23. ?>
     
  12. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Нарисовал простенькую схему работы PHPC (эх, никудышный из меня дизайнер).

    [​IMG]

    Теперь вот думаю, к какому месту документации ее прикрутить :D
     
  13. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Чому передресация из шаблона выходит?
     
  14. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    У меня (как и везде впрочем ;)) их два вида - жесткая (HTTP) и мягкая (через мета-заголовок в шаблоне). Первой занимается пакет, все верно, но второй - шаблон. Я решил не усложнять схему.
     
  15. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    это не совместимо
     
  16. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Dagdamor, на досуге продолжаю разбираться как работает ваша система. Для меня это немного необычно, так как мозги в другую сторону повернуты, но вроде постепенно проникаюсь. Видно что постарались вы на славу и все очень продуманно!

    Вопросов много, но пока задавать не буду, так как их слишком много и при повторном прочтении многие сами отпадают. Посмотрим, что после третьего захода неясно останется :)
     
  17. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Namer, спасибо, может, эта новая статейка вам поможет :)
    А еще вот, но тут более общие слова, это скорее для тех, кто открывает в первый раз.

    Костян, "понял ничего" (c)
     
  18. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Завершена работа над еще одной статьей документации: Структура каталогов и назначение файлов.
    Практическая ценность статьи стремится к нулю, зато какие красивые иконки ;)

    Также по мере необходимости к Содержанию добавляются все новые и новые статьи-заготовки.
    Главная страница Документации заметно "покраснела". От стыда, видимо.
     
  19. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    За последние несколько дней онлайн-руководство к PHPC очень и очень неплохо подросло. Появился новый раздел, Теория PHPC, с целым набором полезных статей о внутреннем устройстве движка и о том, как он работает. Есть даже наглядный пример сборки страницы по шагам, от начального запроса до готового HTML. Читаем: Порядок обработки запроса.

    Также появилось описание стандартных констант и несколько общих слов о преимуществах PHP Compiler. Конечно, многого еще не хватает. Нет описания стандартных функций, да и в разделе спецтегов зияет пробел. Но и уже с тем, что есть, документация к PHPC уже вполне на уровне "мировых стандартов". Пора задумываться о переводе на английский... ;)

    Оффлайн-версия Документации также обновлена. Скачать ее можно по этой ссылке.
     
  20. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    не хватает сравнения со всякими zf/sf/yii
     
  21. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Koc
    Вот бы еще знать, как сравнивать...
    Если я возьму какое-нибудь простое задание, и сделаю его на своем PHPC и на ZF - где гарантия, что на ZF я сделаю его наилучшим образом? Естественно, PHPC по сравнению с классомонстрами будет летать, тут даже сравнивать нечего. Но сторонники этих фреймворков будут твердить мне, что я их "неправильно готовлю", и в чем-то будут правы. :)

    Хотя идея-то неплохая, я что-то наподобие уже делал в прошлом, но не помешает подновить...
    *пошел качать последний ZF*
     
  22. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Хотел уточнить на счет заголовков которые отдает phpc для контента. Этот вопрос проработан? phpc анализирует отдаваемый контент и подставляет правильные заголовки? Например, тип контента, длина, дата модификации, аттач или в строку и т.д. Или дает возможность управлять заголовками? Вот например и предыдущий и этот офлайн мануал вы по всей видимости отдаете скриптом phpc и он у меня крякозябами загружается в окно браузера, а должен я так понимаю идти как аттач и загружаться как файл. (браузер опера)
     
  23. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Namer
    Это два разных вопроса.

    1. Вопрос управления заголовками в PHPC. Да, PHPC старается всегда отдавать правильные заголовки, если вы пользуетесь для этого правильными функциями. Если вы просто отдаете посетителю текст страницы в шаблоне, то PHPC автоматически прописывает заголовки Content-Type и Content-Length, а также заголовки компрессии (если клиент поддерживает) и кеширования (запрещает полностью).

    Если вы отдаете файл функцией contentDisposition, то движок посылает заголовки Content-Type (как правило, application/octet-stream) и Content-Length, компрессию и кеширование - запрещает, а также дополнительно посылает заголовки Content-Disposition (аттачмент) и Content-Transfer-Encoding. Этого достаточно, чтобы клиент все получил как надо.

    2. Кракозябры в последней версии Оперы. По-моему, это косяк браузера. :( По крайней мере, я только что проверил работу ссылки http://www.phpc.ru/download/manual :

    Код (Text):
    1. HTTP/1.1 302 Found
    2. Server: nginx
    3. Date: Thu, 28 Oct 2010 20:37:24 GMT
    4. Content-Type: text/html
    5. Connection: close
    6. X-Powered-By: PHP/5.2.14
    7. Location: /files/manual/phpc.chm
    8.  
    9. HTTP/1.1 200 OK
    10. Server: nginx
    11. Date: Thu, 28 Oct 2010 20:37:24 GMT
    12. Content-Type: application/octet-stream
    13. Connection: close
    14. Last-Modified: Wed, 27 Oct 2010 20:54:30 GMT
    15. ETag: "36304db-5e0b4-4939f6e82ed80"
    16. Accept-Ranges: bytes
    17. Content-Length: 385204
    Такое ощущение, что Опера игнорирует заголовок "Content-Type: application/octet-stream". Но это баг.

    Попробуйте открыть в Опере прямую ссылку на мануал: http://www.phpc.ru/files/manual/phpc.chm
    Она обрабатывается Нгинксом, без запуска PHP/PHPC. Будут крокозябры или скачается нормально?
     
  24. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
  25. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Dagdamor, у меня и на нескольких 9-ых версиях Оперы грузится в окно браузера. Это с настройками по умолчанию. Сделал как вы советовали в настройках Trust Server Types=1 и стало грузиться как файл. Видать это точно недочет Оперы... Другие браузеры изначально загружают как файл.