important tips to remember while working with php

Discussion in 'PHP' started by sagarrai000, Mar 24, 2010.

  1. #1
    • If a method can be static‚ declare it static. Speed improvement is by a factor of 4.
    • echo is faster than print.
    • Use echo’s multiple parameters instead of string concatenation.
    • Set the maxvalue for your for-loops before and not in the loop.
    • Unset your variables to free memory‚ especially large arrays.
    • Avoid magic like __get‚ __set‚ __autoload
    • require_once() is expensive
    • Use full paths in includes and requires‚ less time spent on resolving the OS paths.
    • If you need to find out the time when the script started executing‚ $_SERVER[’REQUEST_TIME’] is preferred to time()
    • See if you can use strncasecmp‚ strpbrk and stripos instead of regex
    • str_replace is faster than preg_replace‚ but strtr is faster than str_replace by a factor of 4
    • If the function‚ such as string replacement function‚ accepts both arrays and single characters as arguments‚ and if your argument list is not too long‚ consider writing a few redundant replacement statements‚ passing one character at a time‚ instead of one line of code that accepts arrays as search and replace arguments.
    • It’s better to use select statements than multi if‚ else if‚ statements.
    • Error suppression with @ is very slow.
    • Turn on apache’s mod_deflate
    • Close your database connections when you’re done with them
    • $row[’id’] is 7 times faster than $row[id]
    • Error messages are expensive
    • Do not use functions inside of for loop‚ such as for ($x=0; $x < count($array); $x) The count() function gets called each time.
    • Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function.
    • Incrementing a global variable is 2 times slow than a local var.
    • Incrementing an object property (eg. $this->prop++) is 3 times slower than a local variable.
    • Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one.
    • Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists.
    • Method invocation appears to be independent of the number of methods defined in the class because I added 10 more methods to the test class (before and after the test method) with no change in performance.

     
    sagarrai000, Mar 24, 2010 IP
  2. dubes0r

    dubes0r Member

    Messages:
    64
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    45
    #2
    thx for the tips. super useful, i think this would make a nice cheatsheet :)
     
    dubes0r, Mar 24, 2010 IP
  3. koko5

    koko5 Active Member

    Messages:
    394
    Likes Received:
    14
    Best Answers:
    1
    Trophy Points:
    70
    #3
    Thanks for the tips.
    but it's widely used in most MVC frameworks.
    Can you please share your opinion about php (and any other template languages) MVC: pluses and minuses, thanks :)
     
    koko5, Mar 24, 2010 IP
  4. GNetCoder

    GNetCoder Peon

    Messages:
    68
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #4
    Nice list! A couple comments:

    I used to be really anal about using mysql_close($the_conn_link), until I read this:

    I like everything neat and tidy when it comes to code; has anyone had any problems with large-traffic sites or resource intensive scripts while not implicitly closing mysql connections?

    I have always used include() instead of require_once(); Has anyone noticed any real differences or usage problems exchanging one for the other? Just curious.
     
    GNetCoder, Mar 24, 2010 IP
  5. linkify

    linkify Well-Known Member

    Messages:
    103
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #5
    Wow! Thanks for tips. I was looking for this cheat sheet for a while.

    I wish to see the same tips for MySQL quires. Let me know if somebody has it.
     
    linkify, Mar 25, 2010 IP