Sign in to follow this  
Followers 0
Frocenter

Нужен совет по PHP

10 posts in this topic

Ребята, подскажите пожалуйста, какой код быстрее выполнится и создаст меньшую нагрузку на сервер ?

Мой код :

<?php
$idform = strip_tags ($_POST["form-id"]);
switch ($idform){
	case 1:
	// Здесь выполнение любого кода и вывод результатов.
	break;
}
?>

Или код рекомендованный LetSevI :

<?php
$idform = strip_tags ($_POST["form-id"]);
call_user_func ("form_$idform");
function form_1(){
	// Здесь выполнение любого кода и вывод результатов.
}
?>

И ещё подскажите пожалуйста, как проверить есть ли function form_1(), и только тогда выводить :

call_user_func ("form_$idform");

что-то типа isset для переменных, а то сам ещё не нашёл...

 

(Для чего это нужно можно посмотреть здесь http://talk.pr-cy.ru/topic/14615-raschyoty-na-stranitce-wordpress/)

Share this post


Link to post
Share on other sites

А разве на JS программу расчета нельзя построить? PHP нужен только в особо глобальных вычислениях 

тебе только switch брать

Frocenter likes this

Share this post


Link to post
Share on other sites

Проверить можно http://php.net/manual/en/function.function-exists.php через: function_exists("form_1"); возвращает тру если есть и фолс если нет. Я думаю много ресурсов и особо быстроте Вы вряд ли выиграете, к этому надо подходить комплексно.

Мне второй вариант нравится из этих двух, только там ошибка я думаю, там

call_user_func ("form_1","$idform");

Frocenter likes this

Share this post


Link to post
Share on other sites

Проверить можно http://php.net/manual/en/function.function-exists.php через: function_exists("form_1"); возвращает тру если есть и фолс если нет. Я думаю много ресурсов и особо быстроте Вы вряд ли выиграете, к этому надо подходить комплексно.

Мне второй вариант нравится из этих двух, только там ошибка я думаю, там

call_user_func ("form_1","$idform");

Здесь $idform не второй параметр, а окончание названия функции, так что ошибки нет.

Share this post


Link to post
Share on other sites

А разве на JS программу расчета нельзя построить? PHP нужен только в особо глобальных вычислениях 

тебе только switch брать

JS просто ещё не изучал, PHP очень нравится, да и работает на сервере, от браузера пользователя ничего не зависит.

Share this post


Link to post
Share on other sites

Тут не о скорости, не о нагрузке говорить нечего. Разницы вы не заметите, так как ее нет.

Share this post


Link to post
Share on other sites

Тут не о скорости, не о нагрузке говорить нечего. Разницы вы не заметите, так как ее нет.

Я спросил о скорости потому что function или case здесь будет очень много !

Share this post


Link to post
Share on other sites

Проверить можно http://php.net/manual/en/function.function-exists.php через: function_exists("form_1"); возвращает тру если есть и фолс если нет.

Solonik, function_exists помогло ! Спасибо !

Реализовал так :

if (function_exists ("form_$idform")){
	call_user_func ("form_$idform");
}

Share this post


Link to post
Share on other sites

Я бы предпочёл вариант с использованием SWITCH, т.к. он более логичен, причём сделал бы чуть иначе:

switch (strip_tags(trim($_POST['form-id']))){
  case 1:
    # Здесь выполнение любого кода и вывод результатов.
  break;
}

Функции предназначены для выноса того участка кода, который неоднократно выполняется (и здесь не имеется в виду многократное выполнение всего php-скрипта).

 

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

Frocenter likes this

Share this post


Link to post
Share on other sites

Брать тот, что нравится, более понятный.

 

Если ориентироватся на быстродействие, то нужно учитывать, как часто все это будет запускаться, сколько времени исполнятся, какая разница между 2 вариантами.

 

Если это не какой-то критический скрипт, то выбрал бы тот вариант, который легче в поддержке.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.