PHP Включить делает ваш код быстрее? - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть сценарий рекламной сети, подобный следующему

http://cdn.domain.com/ad.php?variables=etc

У нас около 10000 обращений в секунду, и мы рассматриваем некоторые улучшения для нашего псевдокода - это то, что я имею в виду - мой вопросесть - будет ли PHP включать замедление моего скрипта, как если бы еще коды, и стоило бы минимизировать PHP на этой странице:

<?php
// mysql connect
// get variables from publisher
// if publisher has no ads show advertise here banner 
// if resolution from variables is 125x125 show that banner or whatever resolution from the vars
// example www.noadhere.com/image/advertishere_{var}125px.jpg
// if publisher has no ads show advertise here banner and also updated mysql with page views for this publisher

// if publisher has a banner then show it and update mysql with page views
// show also the click code that redirects and updates the record with a hit click
?>

Я обновил код.Это проект Фазы 1 для тех, кто заинтересован.Я думаю, что это намного проще, и я собираюсь минимизировать это - даже если в этом нет необходимости - у нас было 4 действия mysql.А теперь их 3 - я только что сделал вид обновлений одним слоем.

# mysql
$c=mysql_connect("sqlmaster.adserver.com","user","************");
mysql_select_db("adserver", $c);

# vars
$a=mysql_real_escape_string($_GET["z"]);//id
$z=mysql_real_escape_string($_GET["z"]);//zone
$h=mysql_real_escape_string($_GET["h"]);//height
$w=mysql_real_escape_string($_GET["w"]);//width
$d=date("Y-m-d H:i:s");//date
$u=mysql_real_escape_string($_SERVER['HTTP_REFERER']);//url

# constructor

    # do we have ads?
    $r1=mysql_query("");
    if(mysql_affected_rows()==0){

        # empty ad code unit
        echo 'Blog Empty';

    } else {

        # we have ads - so show random click code
        echo 'Click here .php ? and redirect';

    }

    # update mysql view table for this ad unit - empty or filled
    $r2=mysql_query("");

# end constructor
mysql_close($c);

Любые предложения по улучшению этого будут приветствоваться.Я думаю, что mysql_real_escape медленный.

Ответы [ 4 ]

2 голосов
/ 28 декабря 2011

Использование include только замедляет ваш скрипт на количество времени, которое требуется вашему серверу, чтобы открыть файл, что обычно составляет доли секунды. Так что это не сильно замедлит выполнение вашего скрипта.

1 голос
/ 28 декабря 2011

Есть много способов заставить код работать быстрее.Обычно разделение кода на отдельные файлы не повышает производительность (вероятно, поможет выборочное включение только необходимого кода вместо огромной библиотеки).

Возможно, вы заметили, что готовых продуктов не так много.Решения для минимизации кода PHP - есть веская причина для этого.Это не будет иметь большого значения для времени выполнения (это делает для javascript главным образом из-за сокращения времени передачи по сети, а не из-за сокращения времени синтаксического анализа).PHP-код не распространяется по сети.И если вы хотите сократить время синтаксического анализа, то использование кэш-кода операции является очень эффективным решением.

Поскольку это, по-видимому, значительный поток дохода, у вас должны быть навыки, чтобы знать это уже.Однако многие улучшения производительности достигаются методом проб и ошибок (а также тщательного проектирования и измерения эксперимента) - возможно, вы захотите потратить некоторое время на разработку этих средств.

1 голос
/ 28 декабря 2011

При использовании PHP-кэша, включения действительно не имеют большого значения.Однако, безусловно, есть очень незначительная разница.

Мои собственные сценарии сборки автоматически заменяют включения на «нормальный» код, используя самодельный синтаксис, обратно совместимый с PHP:

/*safeinclude*/ include 'file.php';

Мой парсер затем читает файл PHP и замечает это.Он захватывает содержимое файла file.php и заменяет включение этим кодом (после некоторой очистки, такой как удаление начального тега <?php).Затем он сохраняется в каталоге bin, где находятся живые файлы.

Этот подход работает очень хорошо, но вы всегда должны проверять теги <?php и ?>.Кроме того, вам придется разделить каталоги src и bin, потому что вы не можете изменить ничего, что уже работает.

Тем не менее, вашей основной областью для оптимизации должна быть база данных, и другиеОперации с интенсивным использованием процессора, такие как циклы.

0 голосов
/ 28 декабря 2011

Хорошая вещь для запуска if и else заключается в том, что будет выполняться только тот код, который необходим для запуска.Включенные страницы загружаются за доли секунды и не влияют на скорость.У большинства крупных веб-сайтов есть длинный список включенных файлов, и вы этого не замечаете.

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