Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#26 Re: Laravel 3 » Вопрос по HMVC » 12.01.2013 05:57:09

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

'catalog' => array(
        'location' => '../modules/catalog',
        'handles' => 'catalog'
    ),

Вот так например)
Но тему еще не стоит закрывать, т.к. скоро еще вопросы назреют, уже прямо чувствую один вопрос)

#27 Laravel 3 » Вопрос по HMVC » 12.01.2013 05:40:22

la2ha
Ответов: 13

До этого работал с CodeIgniter для которого был написан отличный HMVC модуль. Суть которого заключалась в том что каджый модуль лежит в отдельной папке, имеет свои модели, контроллеры, представления и все остальное. Ну и вызывать контроллер из контроллера можно было.
В laravel вызывать контроллер из контроллера вроде как можно. И создавать папки с модулями тоже можно(бандлы имею ввиду)
Т.е. все вроде как хорошо, но меня не устраивает. А неустраивает именно то что я не хочу пихать модули которые отвечают за генерачию страниц(форма обратной связи, или каталог например) в папку с бандлами по причине того что это все же разные темы, баднды за генерацию страниц мне кажется не должны отвечасть а выполняют просто роль расширенных библиотек в некоторых случаях. И хочу сделать чтоб бандлы лежали в бандлах, а модули в папке modules. Но вот че-то не знаю как это реализовать. А просто MVC я вообще как то не воспринимаю, когда куча контроллеров, можелей, и представлений разных тем лежит в 3 папках всего, а раскидать их по под папкам было бы чуть лучше, но PSR-0 не позволяет раскидать так как мне было бы удобно.

#28 Re: Laravel 3 » Не может найти родтельский контроллер, хотя он есть » 12.01.2013 05:24:10

Он находит.
Вывел мне

  string(5) "admin"
  [5]=>
  string(12) "admin.photos"
  [6]=>
  string(11) "admin.login"
  [7]=>
  string(10) "admin.text"

Поле этого меня смутил их порядок, сначала идет admin, а потом то что в папочке, т.к. в CodeIgniter(мой прошлый фреймворк), было указано, что сначала прописываются роуты которые дальше всего ведут.
Это по ходу нужно для того чтоб не получилось они не перекрывались. Т.е. если сейчас смотреть на их порядок то получится что обращаясь к /admin/login запрос идет в контроллер admin и ищат там метод login который не находит и выдает 404.
В качестве решения написал так.

$controllers = Controller::detect();
usort($controllers, function ($a, $b) {if (strlen($a) < strlen($b)) return 1; elseif (strlen($a) == strlen($b)) return 0; else return -1;});
Route::controller($controllers);

Тут массив сортируется по длине значений, не уверен что это правильно и что не может быть каких-то ситауаций где это решение не сработает, т.к. устал и тяжело думать) Но вроде должно быть правильным.

Странно что локально оно правильно сортирует.

#29 Re: Laravel 3 » Как очистить память при использовании Eloquent ORM » 11.01.2013 04:52:33

Написал им предложение отрубить его по умолчанию, и его отрубили, так что следующий релиз уже без этого будет.

#30 Re: Laravel 3 » Не может найти родтельский контроллер, хотя он есть » 10.01.2013 22:15:10

Теперь другая проблема, локально все отлично работает. А на сервере 404 ошибка по адресу /admin/login/ а если в роуты добавляю

Route::controller('admin.login');

То все ок, но я не хочу для каждого контроллера роут писать

#31 Re: Laravel 3 » Не может найти родтельский контроллер, хотя он есть » 10.01.2013 22:10:30

Вопрос решен добавлением в start.php

Autoloader::map(array(
	'Base_Controller' => path('app').'controllers/base.php',
	'Admin_Controller' => path('app').'controllers/admin.php',
));

#32 Laravel 3 » Не может найти родтельский контроллер, хотя он есть » 10.01.2013 21:54:24

la2ha
Ответов: 7
Unhandled Exception
Message:

Class 'Admin_Controller' not found

Выдает мне после попытки выполнения Login контроллера
Вот такой год и структура папок http://grab()by/iU76
Если напрямую к Admin_Controller общащаюсь все ок, если убираю extends, то тоже все ок, а вот наследовать не хочет.

В роутах такое написано

Route::filter('pattern: admin/*', 'auth');
Route::any('/', 'main_page@index');
Route::controller(Controller::detect());

#34 Re: Laravel 3 » Как очистить память при использовании Eloquent ORM » 09.01.2013 02:39:27

Нашел таки, часов 8 на это потратил точно))) Оставлю без комментариев пожалуй.

//application/config/database.php
	/*
	|--------------------------------------------------------------------------
	| Database Query Logging
	|--------------------------------------------------------------------------
	|
	| By default, the SQL, bindings, and execution time are logged in an array
	| for you to review. They can be retrieved via the DB::profile() method.
	| However, in some situations, you may want to disable logging for
	| ultra high-volume database work. You can do so here.
	|
	*/

	'profile' => true,

#35 Re: Laravel 3 » Как очистить память при использовании Eloquent ORM » 08.01.2013 23:08:44

Сырые запросы приводят к тому же результату почти, на 20% сеньше пямяти съедает.

DB::query('insert into test (f_1) values ("'.$text.'")');

#36 Re: Laravel 3 » Как очистить память при использовании Eloquent ORM » 08.01.2013 21:10:48

Не помогло, написал это напрямую в protected function fetch, точнее не именно это, а так чтоб выполнилось именно это.
Потом выяснил что этот метод вообще не используется.
На счет перезапускать, да, думаю это вариант, правда не самый лучший, т.к. особенность скрипта такая, что ему придятся часа 3 работать просто для того чтоб просто дойти до места на котором остановился - иначе никак, но все же решение.
Но я еще поищу утечку, и если найду - поделюсь.

#37 Re: Laravel 3 » Как очистить память при использовании Eloquent ORM » 08.01.2013 12:32:25

// алиас в application.config нужно убрать
Не нашел там алиаса на  Laravel\Database\Connection

Куда писать

class DB extends Database {
  // изначально функция приватная
  static function connect($config) { return parent::connect($config); }
}

???
Не в конфиг же!!

А вообще спасибо большое, а то я уже отчаялся, после того как пол ночи общался в IRC по этому поводу и ничего не помогало.
Уже хотел во всех деструкторах связанных с базой данных написать функции очистки параметров

foreach($this as $item) clear($item) //не так конечно, но суть ясна

А потом подумал что плохо это, в ядро лезть. И очень много классов там учавствует вроде, поэтому подумал уже более мощном VPS по поим подчетам получалось 1 мегабайт за 4 минуты набегает, за сутки следовательно 360 примерно, а скрипт выполняться примерно 3 дня должен. В общем многовато надо ресурсов не на что тратить.

#38 Laravel 3 » Как очистить память при использовании Eloquent ORM » 08.01.2013 06:42:34

la2ha
Ответов: 12

Как очистить память используя  Eloquent ORM, мой маленький тест показал что она не очищается. А мне жизненно необходимо выполнить > 100к более сложных итераций, и только из за того что память почему-то не ощищается, переходить со своих 512 мб, на 2гб, платя в несколько раз больше за VPS не хочется.

<?
    public function memory()
    {
        $text = <<<EOT
       Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 
EOT;
        echo $text;
        for ($x = 0; $x++ < 10000;) {
            Test::create(array('f_1'=>$text));
            echo $x."\n";
            echo get_file_size(memory_get_usage(true))."\n";
        }
    }

--
$test = new Test; $test->f_1 = $text; $test->save();  тот же результат;

Использование gc_enable() не помогло.

Подвал раздела