These are chat archives for LaravelRUS/chat

22nd
Apr 2014
Maxim
@Big-Shark
Apr 22 2014 00:11

Вчера возникла идея, как бы нормально сгруппировать проекты которым я ставлю лайки на гитхабе, вчера от нечего делать накидал небольшой скрипт который показывает самые популярные теги у моих проектов на гитхабе, мой результат

[laravel] => 5
    [database] => 3
    [validation] => 2
    [api] => 2
    [orm] => 2
    [form] => 2
    [activerecord] => 2
    [eloquent] => 2

Кто хочет, вот скрипт https://gist.github.com/Big-Shark/11160887

Alexander Zhuravlev
@SCIF
Apr 22 2014 01:43
А что понимается под расшаренной папкой? smb-шара? В ней хранится проект и оттуда стартует?
Andrew
@bitw
Apr 22 2014 02:54
@Denwebart у меня под виндой возникает подобное если в настройках мискуля хостом писать localhost. ели пишу ип то скорость выполнения возрастала но 30мс в среднем
Alexander Egorov
@Amegatron
Apr 22 2014 02:56
У меня под виндой стоит вамп, так он иногда проглючивает и секунд по 5 ответ выдает, а иногда и вообще подвисает, пока руки не дошли выяснить, в чем проблема
Alexander Zhuravlev
@SCIF
Apr 22 2014 02:57
@bitw , я к этому и клоню, что возможно, это просто особенности работы виндового смб-сервера в виде постоянного разглядывания что за хосты рядом и уймы опросов.
slider23
@slider23
Apr 22 2014 05:25
Там не smb, насколько я знаю, там вроде какое-то родное virtualbox-решение для синхронизации папок виртуалки и хоста. smb можно поставить.
@Big-Shark debugbar не влияет, проект с ним вне шары работает быстро - 30-40ms.
@Denwebart xdebug имхо отключать нельзя, он в dev-окружении нужен.
Maxim
@Big-Shark
Apr 22 2014 05:27
@slider23 а я вырубил xdebug, мне и без него неплохо живется)
slider23
@slider23
Apr 22 2014 05:28
Тогда уж надо деплоить файлики на вагрантовскую виртуалку по ssh, если нужна скорость. Хотя на dev-машине в целом можно и потерпеть. Грустно, но что делать.
Alexander Zhuravlev
@SCIF
Apr 22 2014 05:39
@slider23 , а ты глянь профайлером xdebug'овским как исполняется запрос
Раз так критично ломает производительность внешний фактор — значит будут какие-то функции пыхи показывать очень большое время исполнения — по идее профайлером будет видно.
slider23
@slider23
Apr 22 2014 05:47
@SCIF да там не в php или laravel дело - тормозит чтение файлов. Я меняю только один фактор - расположение проекта - и сразу получаю тормоза. Ну и "For years, the primary bottleneck for virtual machine based development environments with Vagrant has been filesystem performance." http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines
Люди пишут
Alexander Zhuravlev
@SCIF
Apr 22 2014 06:05
Да это понятно, вопрос что именно тормозит. Неужели просто поиск по имени файла.
То, что тормозит кто-то кто отдаёт/читает список файлов понятно. Вопрос в другом — отчего именно — то ли он что-то ищет по сети, то ли чем-то другим ещё занят. Условно говоря — неужели просто include() тормозит?
Есть ведь кэш фс и он такие вещи как раз и должен контроллировать.
slider23
@slider23
Apr 22 2014 06:07
ну вот точно такой же проект вне шары исполняется 30ms. Внутри шары - 300-500ms. Имхо, это говорит обо всем.
Alexander Zhuravlev
@SCIF
Apr 22 2014 06:07
Блин :))
slider23
@slider23
Apr 22 2014 06:08
Я уже расслабился на этот счет, 300 так 300.
Alexander Zhuravlev
@SCIF
Apr 22 2014 06:09
Ладно, давай забивать. То, что он нормально работает в другом месте, понятно. Меня интересовало какой вызов больше всего тормозит.
Опишите плиз, для убогих, о чём конкретно речь
slider23
@slider23
Apr 22 2014 06:10
Я уже не могу свое время свободное на это тратить, в выходные, возможно, отпрофайлю.
Alexander Zhuravlev
@SCIF
Apr 22 2014 06:10
Вагрант — это такой виртуальный контейнер, это общие слова. Может тоже попробую повторить, да поразглядываю сисколы стрейсом.
Я в смысле его никогда не юзал :) Расскажи как повторить, если не сложно
slider23
@slider23
Apr 22 2014 06:10
Сек, отойду.
Maxim
@Big-Shark
Apr 22 2014 06:39
@slider23 http://paste.jesse-obrien.ca/AR список ключивиков которые встречаются в композер.json в проектах который ты лайкнул на гитхабе)
slider23
@slider23
Apr 22 2014 07:09
@Big-Shark Круто :)
Maxim
@Big-Shark
Apr 22 2014 07:10
@slider23 http://paste.jesse-obrien.ca/AS а так еще и с названиями, но место больше занимает )
slider23
@slider23
Apr 22 2014 07:10
Пили сервис для систематизации старов гитхабовских, у них там со стиматизацией плохо, будешь в топе. Социальщину и рекомендации можно будет прикрутить. "Обратите внимание на эти репозитории"
Maxim
@Big-Shark
Apr 22 2014 07:10
Ну я примерное так и хочу, только чую дальше идеи все это не уйдет(
slider23
@slider23
Apr 22 2014 07:11
Расшаривай в опенсорс, народ поможет
Maxim
@Big-Shark
Apr 22 2014 07:11
https://gist.github.com/Big-Shark/11160887 пока вот это чудо что генерит такие массивы)
Я проверял насколько сложно достать все эти данные, изначально скрипт вообще был на 30 строк, но как обычно все ломалось по разным причинам, пришлось многое менять
Но апи у гитхаба крутое)
http://visjs.org крутая либа
Orel
@2byte
Apr 22 2014 09:24
Такое дело с моей онлайн конфой, скрипт стал потреблять 800 мгц процессора. Было 20 человек онлайн, у каждого по два таймера один с интервалом 500 микросекунд, второй 1 секунду. Второй запрашивает аяксом чтение ini файла. Неужеле столько ресурсов потребляется при чтении файла, при 20 запросов в секунду (От кол-во онлайн зависит)
Orel
@2byte
Apr 22 2014 09:37
@Big-Shark где ты был раньше(((((( Взял https://google-developers.appspot.com/chart/interactive/docs/gallery/orgchart
slider23
@slider23
Apr 22 2014 10:01
@2byte а веб-сервер какой стоит ?
Orel
@2byte
Apr 22 2014 10:02
nginx
slider23
@slider23
Apr 22 2014 10:04
значит вот так вот. переходи на вебсокеты или long-polling (http://dklab.ru/lib/dklab_realplexor/)
все равно рано или поздно упрешься в производительность, если таймерами со страницы будешь обновляться
Orel
@2byte
Apr 22 2014 10:06
Да, это еще больше таймеров будет нужно
Orel
@2byte
Apr 22 2014 11:04
Вот только http://rutvit.ru/ не работает (
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:04
не выдержал конкуренции))
Orel
@2byte
Apr 22 2014 11:05
Вот id не совсем понял у каналов
И курсоры
slider23
@slider23
Apr 22 2014 11:08
рутвит заспамили по самое небалуйся
Orel
@2byte
Apr 22 2014 11:16
@slider23 сам не пользовался replexor ?
slider23
@slider23
Apr 22 2014 11:16
нет, не пользовался
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:22
а че заспамили?
slider23
@slider23
Apr 22 2014 11:26
в интернете все спамят, это как реликтовое излучение. немодерируемые ресурсы помирают очень быстро.
Alexander Egorov
@Amegatron
Apr 22 2014 11:30
хм, кто-нить делал запросы из вложенных SELECT'ов при помощи Query builder? То есть нужно что-то вроде SELECT ... FROM (SELECT ... FROM table) ... Что-то не догоняю, как их делать ...
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:31
можно попробовать DB::table('some_table')->whereId(10)->toSql()
Alexander Egorov
@Amegatron
Apr 22 2014 11:32
ну это сам вложенный запрос, его то не проблема сформировать, как внешний запрос будет выглядеть?
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:32
и вложить этот запрос в DB::table('another_table')->select(DB::Raw())
DB::table(DB::Raw(DB::table('some_table')->whereId(10)->toSql()))->get()
Alexander Egorov
@Amegatron
Apr 22 2014 11:32
ну так это будте SELECT ... FROM another_table
а, ну если только так
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:32
вообще страшно выглядит)
slider23
@slider23
Apr 22 2014 11:33
Плюс у него на морде выводились последние посты, это вообще верная смерть для ресурса.
Alexander Egorov
@Amegatron
Apr 22 2014 11:33
ну да, я тоже об этом думал, но пока не рискнул его попробовать ))))
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:33
@slider23 ))) вот так всегда)
Alexander Egorov
@Amegatron
Apr 22 2014 11:33
ну я не боюсь на морду последние посты выводить, ибо у меня нагрузка минимальная на ресурс )))
slider23
@slider23
Apr 22 2014 11:33
Есть есть место с большим pr, где спамер может вставить свою ссылку - это большой риск для ресурса. Много блог-хостингов так полегло.
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:35
а как же rel="nofollow" ?
slider23
@slider23
Apr 22 2014 11:40
Хм, вышел-зашел в чат и увидел посты @Amegatron. А до этого не видел.
Alexander Egorov
@Amegatron
Apr 22 2014 11:40
у меня частенько такое бывает - счетчик непрочитанных появляется, а сами сообщения нет, приходится рефрешить
в общем DB::table(DB::raw(DB::table('table')->...->toSql())->... не работает, он этот вложенный sql берет в обратные кавычки и соотв-но ошибка синтаксиса, unknown table :/ че ж делать интересно ...
Brezhnev Ivan
@vanchelo
Apr 22 2014 11:49
жаль
Alexander Egorov
@Amegatron
Apr 22 2014 11:56
хм, возможно я где-то опечатался
вдруг заработало х_Х
видимо в DB::raw забыл обернуть, видимо старею )))
Страшно то как )))
        $subQuery = DB::table('loginlog')
            ->select('username', 'created_at', 'expired')
            ->orderBy('created_at', 'DESC');

        $lastLogins = DB::table(DB::raw('(' . $subQuery->toSql() . ') ll'))
            ->select('ll.username', 'll.created_at', 'll.expired', 'licenses.id as license_id')
            ->leftJoin('licenses', 'll.username', '=', 'licenses.username')
            ->groupBy('ll.username')
            ->orderBy('created_at', 'DESC')
            ->limit(10)
            ->get();
Brezhnev Ivan
@vanchelo
Apr 22 2014 12:22
))
Alexander Egorov
@Amegatron
Apr 22 2014 12:23
все из-за того, что захотел извлекать еще поле expired из таблицы, до этого была просто выборка MAX(created_at)
Alexander Egorov
@Amegatron
Apr 22 2014 14:03
Чую можно открывать рубрику "Как это сделать на Laravel?" =)
https://vk.com/feed?section=comments&w=wall-53758340_2767
Alexey
@Butochnikov
Apr 22 2014 14:41
@Amegatron спасибо, что отвечаешь
Alexander Egorov
@Amegatron
Apr 22 2014 14:47
@Butochnikov да мне самому стало интересно поковыряться )
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:45

на счет кэша в секундах, смотрю метод expiration в FileStore:

protected function expiration($minutes)   
{                                         
    if ($minutes === 0) return 9999999999;   

    return time() + ($minutes * 60);         
}

т.е. не проще ли просто передавать

Cache::put('key', 'value', 10/60)
Alexander Egorov
@Amegatron
Apr 22 2014 15:46
хм, а почему нет? )))
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:46
в других хранилищах этого метода нет но суть та же, вот в DatabaseStore
$expiration = $this->getTime() + ($minutes * 60);
Alexander Egorov
@Amegatron
Apr 22 2014 15:47
я чета даже и не подумал об этом )))
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:47
мне кажется это проще всего
Alexander Egorov
@Amegatron
Apr 22 2014 15:47
ну да )
я по привычке пошел по пути наследования и замены лариковских классов ))
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:48
я вот щас как раз решил покопаться) тоже думал что там и как, но мне сразу на ум пришло поделить на 60)
Alexander Egorov
@Amegatron
Apr 22 2014 15:48
видимо я разучился искать легкие пути :D
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:49
можно свою функцию хелпер написать
function putToCache($key, $value, $seconds) {
    return Cache::put($key, $value, $seconds / 60);
}
хотя по мне так это лишнее)
Alexander Egorov
@Amegatron
Apr 22 2014 15:50
ну почему, каждый раз можно забыть на 60 делить
отпишись ему
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:51
но функция полюбому работать будет быстрее чем класс наследованный, причем там ему наследовать придется не один драйвер
во всех драйверах метод put отличается, если один драйвер в проекте использовать то можно и заморочится, написать свой драйвер MyCacheStore
Alexander Egorov
@Amegatron
Apr 22 2014 15:52
ну я практически об этом и написал в общем-то
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:52
но опять таки ничего наследовать не надо, просто в конфиге потом указываешь mycache
Alexander Egorov
@Amegatron
Apr 22 2014 15:52
не совсем
CacheManager не знает. где искать твой mycache
там на каждый драйвер свой метод createXXXProvider
то есть createXXXDriver
Alexey
@Butochnikov
Apr 22 2014 15:54
да уж, я думал, что совсем беда, что товарищ так написал.
напишите ему тогда
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:55
@Amegatron ага, я понял в чем там затуп
$method = 'create'.ucfirst($driver).'Driver';
Alexander Egorov
@Amegatron
Apr 22 2014 15:55
угу
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:56
нее, смотри дальше по коду
public function extend($driver, Closure $callback)
{                                                 
    $this->customCreators[$driver] = $callback;      

    return $this;                                    
}
Alexander Egorov
@Amegatron
Apr 22 2014 15:56
дада
как раз увидел
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:56
через Cache::extend() всё решается)
Alexander Egorov
@Amegatron
Apr 22 2014 15:57
ну да
это будет оптимальнее всего
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:57
кладешь драйвер в нужное место
но я бы делил на 60)
Alexander Egorov
@Amegatron
Apr 22 2014 15:57
ну да ) напиши ему про это, я лайкну :D
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:57
хоть можно один какой-нить драйвер наследовать и метод put только переписать
лучше ты напиши)
у тебя писать лучше выходит)
Alexander Egorov
@Amegatron
Apr 22 2014 15:58
=) на тебя сошлюсь )))
Brezhnev Ivan
@vanchelo
Apr 22 2014 15:58
ок)
я ушел)) всем удачи)
Alexander Egorov
@Amegatron
Apr 22 2014 15:59
пока )
в доках как раз есть через extend)
но там предлагается реализовать интерфейс, но зачем нам это) можно FileStore или RedisStore наследовать и не парится)
так что зря он преждевременно на нашего ларика наехал)
Rafkat Galiullin
@neolite
Apr 22 2014 16:44
вот вы здесь наспамили)
Alexey
@Butochnikov
Apr 22 2014 18:08
кто знает почему некоторые пакеты стали вот так устанавливаться "Failed to download symfony/security from dist. Now trying to download from source."
laravel уже мин 7 устанавливается
Alexander Egorov
@Amegatron
Apr 22 2014 18:15
погуглил, возможно дело в openssl ? у тебя в php.ini openssl включен? сам ставил ларик последний раз полторы недели назад, все норм было
Alexey
@Butochnikov
Apr 22 2014 18:16
с openssl все ок. не менял. даже на Digital Ocean вчера закидывал... там тоже таки траблы были
Alexander Egorov
@Amegatron
Apr 22 2014 18:17
ну тогда не знаю
Alexey
@Butochnikov
Apr 22 2014 18:18
типа Failed to download symfony/filesystem from dist: 'D:/tmp/filesystem/Symfony/Component/Filesystem/2408a190dc06068f62968ed6704975ce' is not a zip archive.
и все тут
Now trying to download from source
гуглю... глухо по этой теме
Alexander Egorov
@Amegatron
Apr 22 2014 18:19

хм,

is not a zip archive

может они теперь в каком-нить tgz ?

и поэтому композер их не может распаковать
Alexey
@Butochnikov
Apr 22 2014 18:20
хз, композер обновил. ларик ставлю с нуля
Alexander Egorov
@Amegatron
Apr 22 2014 18:20
хотя я не с нуля ставил, а копирнул предыдущий проект и обновил
Alexey
@Butochnikov
Apr 22 2014 18:54
ща вообще весело Could not fetch https://api.github.com/repos/laravel/laravel/zipball/f138f0f4fce63fdb371064a66a4c92226a8b1ace, enter your GitHub credentials to go over the API rate limit
Alexander Egorov
@Amegatron
Apr 22 2014 18:55
жесть )
Alexey
@Butochnikov
Apr 22 2014 19:12
короче все перепробовал... и ключ в github менял, и обновлял, и конфигурацию прописывал... не помогло. все стало ок когда просто грохнул кеш у компосера
осталось понять почему на DO глючило. там ubuntu нулевый
Alexey
@Butochnikov
Apr 22 2014 19:39
а давно миграции перестали автоматом генерить increments и timestamps ?
Alexander Egorov
@Amegatron
Apr 22 2014 19:40
хм, а они когда-то автоматом это делали?
я всегда вручную прописывал increments и timestamps
Alexey
@Butochnikov
Apr 22 2014 19:41
да вроде было... заходишь, а там эти две строчки уже, автоматом
Alexander Egorov
@Amegatron
Apr 22 2014 19:41
ну по кр. мере с января этого точно нет )
slider23
@slider23
Apr 22 2014 19:49
А Леруа Мерлен Бразилия реально на Laravel, похоже - https://github.com/leroy-merlin-br/larasniffer
И там Zizaco в команде https://github.com/Zizaco
Alexey
@Butochnikov
Apr 22 2014 19:58
@Amegatron забыл, что нужно у --create писать --create=имя_таблицы. тогда поля автоматом прописываются.