PHP ini_set php.net manual display_errors example

2019-08-03 19:04发布

问题:

Reading php.net's example of setting display_errors with ini_set:

<?php
echo ini_get('display_errors');

if (!ini_get('display_errors')) {
    ini_set('display_errors', '1');
}

echo ini_get('display_errors');
?>

Is there a good reason as to why we're checking to see if display_errors is false before we set it to true? Surely it would be faster to not bother checking and just set it to true if that was our intention?

I would be really appreciative if someone could enlighten me on this; as should I be doing something similar with error_reporting(-1); too?

Thank you all!

回答1:

Is there a good reason as to why we're checking to see if display_errors is false before we set it to true?

It's an example. No, there is no deeper reason. Overriding "true" with "true" also is valid.

Surely it would be faster to no bother checking and just set it to true if that was our intention?

I guess you would rarely feel any difference, wether you check it first, or not.

However: You should use php.ini for this and more important: Never enable display_errors on a live system!



回答2:

Well, I did a quick test on my localhost, which actually seemed to indicate that if display_errors is already set, then it's actually faster to check if it's already set, than to just set it.

It's fairly trivial as I had to run a loop a million times to really notice a difference, and even then it's not much (about 10%), but it does seem to be there. I guess this would indicate that set_ini is doing a bit more work than get_ini.

Perhaps others can confirm?

I guess in practice this is pretty useless, as you'd not really want display_errors set to true on a live site, so micro-performance optimisation isn't so much of a concern.

Other than that, can't think of a reason as to why you'd want to check up front.