Мне стало интересно, что менее ресурсоёмко при чтение файлов конфигурации: сериализованные данные, include PHP файла или JSON. Забегая вперёд скажу, результаты теста показывают что без разницы как хранить настройки.
И так, вариант №1 include_once:
//test_include.php include_once 'config.php'; echo $config['var1']."\n"; echo $config['var5']."\n"; //config.php $config = array( 'var1' =--> 1, 'var2' => 2, 'var3' => 3, 'var4' => 4, 'var5' => 5, 'var6' => 6, 'var7' => 7, 'var8' => 8, 'var9' => 9, 'var10' => 10 );
Вариант №2 сериализованные данные:
//test_data.php $config = unserialize(file_get_contents('config.data')); echo $config['var1']."\n"; echo $config['var5']."\n"; //config.data a:10:{s:4:"var1";i:1;s:4:"var2";i:2;s:4:"var3";i:3;s:4:"var4";i:4;s:4:"var5";i:5;s:4:"var6";i:6;s:4:"var7";i:7;s:4:"var8";i:8;s:4:"var9";i:9;s:5:"var10";i:10;}
Вариант №3 JSON данные:
//test_json.php function toArray($data) { if (is_object($data)) $data = get_object_vars($data); return is_array($data) ? array_map(__FUNCTION__, $data) : $data; } $config = toArray(json_decode(file_get_contents('config.json'))); echo $config['var1']."\n"; echo $config['var5']."\n"; //config.json {"var1":1,"var2":2,"var3":3,"var4":4,"var5":5,"var6":6,"var7":7,"var8":8,"var9":9,"var10":10}
Скрипт для многократного запуска:
//test.sh #!/bin/bash echo $1 i=0 while [ $i -lt 1000 ] do php $1 > /dev/null 2> /dev/null i=$[$i+1] done
Результаты:
$ time ./test.sh test_include.php test_include.php real 0m14.026s user 0m7.388s sys 0m5.076s $ time ./test.sh test_data.php test_data.php real 0m14.009s user 0m7.556s sys 0m4.900s $ time ./test.sh test_json.php test_json.php real 0m14.104s user 0m7.440s sys 0m5.024s
Как я и сказал в самом начале, нет особой разницы как хранить файлы конфигурации, но я всё же считаю что более читабельный вариант это всё же PHP файлы, т.к. в них можно без труда добавить комментарии, так же в них можно объявлять константы и пользоваться уже ими.
Автор: Сергей Степанов
Поделиться @