Любопытство: слишком ли много автозагрузки в codeigniter замедлит работу приложения?

Я использую php и codeigniter, у него есть класс автозагрузки.
Мой первый вопрос:

If I use autoload class to load all model will it make my application slower? Or is there no effect?

Мой второй вопрос:

Which one is better and faster, loading all model you need using autoload class, Or load only some models you need in a class function?

1

Решение

1) Класс автозагрузки, очевидно, замедлит работу вашего приложения. потому что он использует функцию php4 require для загрузки файлов. Есть некоторые хаки, чтобы использовать функцию автозагрузки PHP 5. Надеюсь, новый владелец codeigniter добавит поддержку автозагрузки.

2) Лучше использовать конкретные модели загрузки, а не автозагрузку. в предыдущем пункте я указал причину этого. в основном, рекомендуется загружать только необходимую модель, помощника, библиотеку и ресурсы. это гарантирует, что вы используете минимальное время и память.

2

Другие решения

Я использую автозагрузку. и он работает как брелок без существенного влияния на время загрузки.

метод

Добавьте этот мир кода поверх любых библиотек / моделей, которые вы используете в своем CI autoload.php

пример для меня мой config / autoload.php выглядит

$autoload['libraries'] = array('database','door','acl','form_validation','notify');

и в библиотеках / Door.php я добавил

<?php//libraries/Door.php
function multi_auto_require($class) {
#var_dump("requesting $class");
if(stripos($class, 'CI') === FALSE && stripos($class, 'PEAR') === FALSE) {
foreach (array('objects','core') as $folder){//array of folders to look inside
if (is_file(APPPATH."{$folder}/{$class}.php")){
include_once APPPATH."{$folder}/{$class}.php";
}
}
}
}

spl_autoload_register('multi_auto_require');
class Door {

я добавил этот фрагмент чуть выше class Door{ таким образом, этот фрагмент будет запускаться каждый раз, когда codeigniter загружает библиотеку дверей.

Тестирование и бенчмаркинг
Теперь для бенчмаркинга я протестировал этот код на странице с 17 запросами к БД из 8 автозагрузанных объектов из 2 разных папок с массивом из 3 папок для просмотра.

Результат
используя вышеупомянутый метод Vs include_once 'classlocation.php' для всех классов проекта,

в среднем 10 обновлений страниц для обоих методов, где около 0,6 с;
так что вы можете видеть, что нет существенной разницы между обоими методами.

все же, хотя я не проверял это на страницах, которые не используют все классы, все же я уверен, что автозагрузка делает мою жизнь CI намного лучше, и я счастлив этим.

0

По вопросам рекламы [email protected]