КатегорииLinksUnix Tutorial
Personal Development Ruslan Valiev UnixPin Solaris Performance Team Damien Farnham Fintan Ryan Nicky Veitch Niall Mullen Sean McGrath DTrace Bryan Cantrill Brendan Gregg ZFS Tim Foster General Ben Rockwood Learning Solaris 10 Privacy policy Архивы |
Tuesday, 13 December. 2005
DTrace: наблюдение за ... Добавил Gleb Reys
в категории DTrace в
02:16
Комментарии (2) Обратные ссылки (0) Select language: English
DTrace: наблюдение за PHP, часть 2
Следующим шагом наблюдения за PHP с помощью DTrace вполне может стать подобный скрипт. Он подсчитывает, сколько наносекунд провёл процесс Apache, выполняя ту или иную функцию PHP.
В ходе работы, скрипт выводит таблицу процессов Apache и скриптов PHP, в них запускаемых. Позже выводится таблица всех функций, с указанием процесса, который их выполнял, и затраченного времени. Скрипт можно скачать тут: php-scripts-timer.d CODE: #!/usr/sbin/dtrace -s #pragma D option quiet BEGIN { printf("php scripts timer started\n"); } :dtrace.so::function-entry / copyinstr(arg0) == "" && name[pid,copyinstr(arg1)] != 1 / { printf("%d -> %-30s\n", pid, copyinstr(arg1)); name[pid,copyinstr(arg1)] = 1; } :dtrace.so::function-entry / copyinstr(arg0) != "" / { self->ts = timestamp; } :dtrace.so::function-return / copyinstr(arg0) != "" / { self->elapsed = timestamp - self->ts; @time[pid, copyinstr(arg0)] = sum(self->elapsed); } END { printf("<------ php scripts timer finished"); printf("\n%10s %40s %14s\n", "PID", "PHP function", "Time elapsed"); printa("%10d %40s %14@u\n", @time); } А вот так может выглядеть типичный результат запуска этого скрипта, при параллельно открываемых с вашего сервера страниц с PHP: CODE: php scripts timer started
223074 -> /export/www/nightly/pma/left.php 223071 -> /export/www/nightly/pma/main.php 223074 -> /export/www/nightly/pma/css/phpmyadmin.css.php 223071 -> /export/www/nightly/pma/css/phpmyadmin.css.php <------ php scripts timer finished PID PHP function Time elapsed 223074 ob_get_level 22280 223074 get_cfg_var 32678 223074 mysql_get_client_info 32705 223074 strrpos 39160 223074 PMA_auth_set_user 39178 223071 get_magic_quotes_gpc 39478 223071 ob_get_level 43673 223071 addslashes 54847 223074 strpos 56869 223071 basename 61874 223071 PMA_reloadNavigation 63588 223071 mysql_get_client_info 64570 223071 get_cfg_var 64592 223071 ereg_replace 65993 223074 get_magic_quotes_gpc 67738 ... 234950 main 84254684 238255 main 105016748 238255 substr 153752861 238255 mysql_query 192585647 238255 PMA_DBI_try_query 195113800 234950 PMA_DBI_query 220108343 234950 mysql_query 276732073 234950 PMA_DBI_try_query 280801228 Tuesday, 6 December. 2005
DTrace: наблюдение за PHP Добавил Gleb Reys
в категории DTrace в
20:16
Комментарии (0) Обратные ссылки (0) Select language: English
DTrace: наблюдение за PHP
Наконец-то нашёл время, и скачал PEAR модуль DTrace. Замечательная штука! Нашёл там одну маленькую проблему, и написал письмо товарщиу Фёрлонгу (Wez Furlong), который немедленно внёс изменения в исходник модуля, и теперь всё работает просто замечательно. Большущее спасибо, Wez! :)
Итак, самый первый скрипт для наблюдения за PHP: php-scripts-snoop.d CODE: #!/usr/sbin/dtrace -s #pragma D option quiet :dtrace.so::function-entry / copyinstr(arg0) == "" / { printf("%d -> %-30s\n", pid, copyinstr(arg1)); } :dtrace.so::function-return / copyinstr(arg0) == "" / { printf("%d <- %-30s\n", pid, copyinstr(arg1)); } Качайте скрипт, ставьте ему chmod a+x, и после запуска его в терминале на вашем веб-сервере, можно запускать различные скрипты PHP с этого сервера, и скрипт будет докладывать, когда начинается или заканчивается выполнение того или иного PHP скрипта, и который из процессов Apache за это отвечает: CODE: bash-3.00# ./php-scripts-snoop.d 204934 -> /export/www/pma/index.php 204934 <- /export/www/pma/index.php 204934 -> /export/www/pma/css/phpmyadmin.css.php 204934 <- /export/www/pma/css/phpmyadmin.css.php 204936 -> /export/www/pma/left.php 204934 -> /export/www/pma/queryframe.php 204936 <- /export/www/pma/left.php 204936 -> /export/www/pma/main.php 204934 <- /export/www/pma/queryframe.php 204934 -> /export/www/pma/css/phpmyadmin.css.php 204934 <- /export/www/pma/css/phpmyadmin.css.php 204934 -> /export/www/pma/css/phpmyadmin.css.php 204936 -> /export/www/pma/css/phpmyadmin.css.php 204934 <- /export/www/pma/css/phpmyadmin.css.php 204934 -> /export/www/1.php 204934 <- /export/www/1.php 204936 <- /export/www/pma/css/phpmyadmin.css.php pS: да, с сегодняшнего дня решено все скрипты выкладывать для скачивания - так оно вам удобней будет. Так что в ходе обработки архивных записей блога, все скрипты будут соответствующим образом обозваны и снабжены ссылками для скачивания. Friday, 26 November. 2004
SunOne Web Server 6.1 и PHP ... Добавил Gleb Reys
в категории Solaris в
20:49Комментарии (0) Обратные ссылки (0) SunOne Web Server 6.1 и PHP по-быстрому
Несколько дней подряд ходил мучимый мыслями, как же php добавляется к SunOne веб-серверу (SWS). Apache-то я регулярно пересобираю сам с поддержкой php и всех наворотов, какие только могут понадобиться...
А вот SWS уже сто лет не ставил и не трогал - когда-то давно, ещё когда это было Netscape Suite, ставил, но глубоко разбираться не стал... Да и сейчас незачем, в общем-то, но вот же любопытство - заело меня за каких-то три дня! В общем, сегодня было решено выделить полчаса на игрища с SWS, и результатами я доволен. Узнал, что, оказывается, php прекрасно компиляется для SWS: ./configure --with-nsapi=/export/s1ws и после установки появляется файлик /export/s1ws/bin/libphp4.so. Естественно, лучше сразу же скопировать php.ini-recommended в /usr/local/lib/php/php.ini. А потом посредством всего нескольких примитивных шагов можно заставить SWS обрабатывать php по всем правилам: 1) В mime.types нужно добавить строчку CODE: type=magnus-internal/x-httpd-php exts=php 2) В magnus.conf добавить две строки: CODE: Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" \ shlib="/export/s1ws/bin/libphp4.so" Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" \ [php_ini="/usr/local/lib/php/php.ini"] 3) В obj.conf добавить строчку: CODE: Service fn="php4_execute" type="magnus-internal/x-httpd-php" \ [inikey=value inikey=value ...] Ну вот и всё. Осталось только перезапустить сервер, и вуаля - любимый php'шный Hello, world! работает на ура :) Уложился минут в 15, учитывая что пришлось пару раз переустановить сам SWS и какие-то секунды потратить на поиск руководства по установке php для iPlanet'оподобных серверов. Страничка очень полезная, кстати - так что всем советую!
« предыдущая страница
(Страница 1 из 1, всего записей: 3)
следующая страница »
|




