- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
<?php
function load ($file) {
static $files = null;
$files or $files = [];
if (!isset($files[$file])) {
require($file);
$files[$file] = true;
}
}
$times = 1000000;
$time1 = microtime(true);
for ($i = 0; $i < $times; $i ++) {
require_once('inc.php');
}
$end1 = microtime(true) - $time1;
$time2 = microtime(true);
for ($i = 0; $i < $times; $i ++) {
load('inc.php');
}
$end2 = microtime(true) - $time2;
echo "require_once = $end1 vs \nload = $end2";
Вот это да... require_once работает в ~8 раз медленнее чем функция load. Вывод:
require_once = 16.962311029434 vs
load = 2.6861710548401
Содежания файла inc.php:
<?php echo 'Hello, world!';
Stallman 06.01.2015 09:27 # 0
Щито я делаю не так?
Fike 06.01.2015 10:44 # +1
Fike 06.01.2015 11:03 # 0
bormand 06.01.2015 11:58 # +1
А что возвращает require_once? Результат, который вернул модуль при его первой и единственой загрузке?
Fike 06.01.2015 12:12 # +1
upd: @require_once('nonexistent') вернет вообще ебаное ничего, лол. вар_дамп отказывается это выводить.
bormand 06.01.2015 12:21 # 0
Оно ничего не возвращает, это ж фатальная ошибка. До var_dump дело не доходит:
require is identical to include except upon failure it will also produce a fatal E_COMPILE_ERROR level error. In other words, it will halt the script whereas include only emits a warning (E_WARNING) which allows the script to continue.
bormand 06.01.2015 12:25 # +1
Шах и мат, собакоёбы.
Fike 06.01.2015 12:30 # 0
bormand 06.01.2015 12:32 # 0
Тут вон были личности, которые волшебные кавычки яростно защищали...
Fike 06.01.2015 12:34 # 0
Ждем седьмой версии и phpng короче.
defecate-plusplus 06.01.2015 13:34 # +2
врач сказал - в морг, значит, в морг
Fike 06.01.2015 14:54 # 0
myaut 07.01.2015 11:03 # +1
Чтобы пройти минное поле нужен хороший проводник :)
Stallman 07.01.2015 01:54 # 0
bormand 07.01.2015 10:57 # 0
Fike 07.01.2015 11:09 # 0
bormand 07.01.2015 11:56 # 0
bormand 06.01.2015 10:04 # +1
Stallman 06.01.2015 10:41 # +2
Fike 06.01.2015 11:05 # −2
inkanus-gray 06.01.2015 13:37 # 0
Вывод php -v:
Да, [] заменил на array().
inkanus-gray 06.01.2015 14:00 # +2
bormand 06.01.2015 14:53 # 0
Fike 06.01.2015 14:55 # +2
wvxvw 06.01.2015 16:17 # 0
inkanus-gray 06.01.2015 16:53 # +3
Abbath 06.01.2015 16:55 # 0
inkanus-gray 06.01.2015 21:15 # 0
inkanus-gray 06.01.2015 22:04 # +1
require_once = 2.6988000869751 vs load = 0.74880003929138
В том же php 5.4 + xdebug:
require_once = 3.0107998847961 vs load = 24.398400068283
volter9 08.01.2015 02:08 # 0
volter9 06.01.2015 22:56 # 0
inkanus-gray 07.01.2015 01:10 # +2
А вообще никто не мешает запустить одновременно несколько FastCGI-серверов на разных портах и использовать в вебе одновременно несколько пыхов.
guest 06.01.2015 21:03 # +4
inkanus-gray 06.01.2015 21:10 # +2
Vasiliy 07.01.2015 14:38 # +3
bot 08.01.2015 20:32 # 0
guest 09.01.2015 01:25 # +1
bot 09.01.2015 02:19 # 0