Ответы пользователя по тегу Laravel
  • Очереди Laravel. Как выполнять задачи в фоне?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Единственное, что приходит в голову, это либо передать задачу внешнему приложению, либо попробовать запустить задачу в отдельном потоке, но на счёт PHP я не уверен, насколько хорошо такая идея сработает и сработает ли вообще, т.к. у PHP есть параметр "ограничение времени работы скрипта", "количество пулов", иначе говоря, изначально PHP не рассчитан на работу "в режиме реального времени".

    Обычно, для задач используют планировщики, например, записать в базу список задач, которые нужно делать, а планировкщик каждые N-минут ходит по ним, проверяет и выполняет их по списку соотв. Либо, как я уже писал выше - передайте управление внешнему приложению (если очень хочется, это может быть PHP-скрипт, запущенный в CLI-режиме [т.е. без веб-сервера], который не имеет ограничений на время выполнения).
    Ответ написан
  • Как логировать изменения с возможностью откатить?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Изменения чего Вы хотите логировать? Базы или файлов? Если файлов - то GIT.

    Если базы, то миграции или, возможно, Git+миграции.

    Если ещё и данных в БД, то бекап БД (если база небольшая, то бекап в GIT).
    Ответ написан
  • Как передать переменную в layouts?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Оно?
    View::share('key', $value);
    Ответ написан
    2 комментария
  • Исходники социальной сети на php framework?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Мне кажется, Вы напрасно пытаетесь скрестить нескрещеваемое... "Реальную соц. сеть", да ещё и из реального проекта... Проект масштаба "реальная соц. сеть" и любой фреймворк - вещи очень мало совместимые между собой. Более того, "качественного" кода там не будет, по крайней мене "качественного для обучения" - так точно. Поищите лучше CMS построенный на базе фреймворков + модуль ака "соц. сеть" для этой CMS. Так вот сходу, могу назвать пожалуй несколько:

    KodiCMS, OctoberCMS -- на Laravel
    Drupal 8 -- на Symfony

    Так же есть масса других CMS, построенных на базе CMF, например, Joomla, для которых есть модуль "соц. сесть", с довольно качественно (для обучения) написанным кодом, не редко проекомментированным "по самое не балуйся", вплоть до того, что комментариев больше чем кода. Документацию, я думаю можно так же либо найти, либо самому сгенерировать (при желании).
    Ответ написан
    Комментировать
  • Почему не известна переменная?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Скорее всего по тому, что Вы используете там т.н. колбэк-функцию (или по русски - функцию-замыкание), а область её видимости обычно строго ограничена.

    Думаю, ситуацию исправило бы примерно следующее:
    Mail::send('email_verify', $data, function($message) use ($user) { ...


    Тут немного подробностей.
    Ответ написан
    Комментировать
  • Какой запрос выгодней по производительности?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Всё на самом деле зависит от того, что лично Вы подразумеваете под определением "сильно нагруженный портал" и от многих других факторов, в том числе, от используемого железа, версии MySQL (и/или его форка) и конечных параметров и настроек, и так далее. А так же, от "качества" администратора, которому вверят эту БД.

    Субъективно, оценивая Ваш вопрос, я бы порекомендовал примерно следующее:
    В "интернете", активно практикуется подход кэширования данных, не зависимо от того, какие это данные именно. Кэшируют всё, от отдельных блоков на сайте, до целых страниц вместе с cookie's, картинками и скриптами.

    В пользу кэша говорят многие факторы. Против же кэширования обычно приводятся два основных аргумента:
    а) Лишний расход оперативной памяти и/или жесткого диска
    б) Кэш не стоит применять в тех случаях, когда ресурсозатраты (машинные) на кэширование выше, чем полученный эффект экономии от получения данных из кэша (обычно это те случаи, когда количество циклов записи меньше, или незачительно больше чем количество циклов чтения данных)

    В вашем же случае, кэширование возможно в двух вариантах:
    1. MySQL (в отличии от некоторых других БД) сам кэширует результаты запросов, причем делает он это по умолчанию, но параметры кэширования можно (и чаще всего нужно) настраивать дополнительно
    2. Использование кэша с помощью специально разработанных для этих целей программ, например Redis или Memcached. PHP (и Laravel в т.ч., если мне не изменяет память) отлично дружат с ними.

    Продолжая мысль, в Вашем случае, можно использовать один двух вариантов: либо ограничиться тем, что MySQL сам закэширует результаты многих запросов и сам будет брать их из кэша (причем это касается не только запросов относительно координат, но и почти всех остальных запросов),

    либо, Вы можете использовать для хранения подобных данных (например, соотношения координат с результатами поиска) либо в таблицы в памяти (в MySQL есть тип таблиц "MEMORY"), либо хранить эти данные в Redis/Memcached/etc, глобально суть не изменится, скорость работы обоих вариантов (Таблицы в памяти vs Redis/Memcached) будет примерно сопоставимой.

    Обновлять данные в хранилище можно на основе событий, реализация которых в достаточной мере присутствуют в Laravel. То есть, вкратце выглядит это так:
    1. Обновляется (добавляется, изменяется) какой-то блок данных, связанный с фирмой, это в свою очередь порождает какое-то событие (одно из событий)
    2. Слушатель событий получает данные и делает соответствующие изменения в кэше данных, таким образом, данные в кэше всегда актуальны (либо рассинхронизация данных довольно мизерная, в пределах примерно секунды) и никакие CRON'ы, которые бестолку будут мучить базу или кэш-хранилище - не нужны.
    Ответ написан
    1 комментарий
  • Как настроить OpenServer 5.2.5, чтобы использовать secure_url() в Laravel 5.3 на localhost?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Когда Вы запускаете php artisan serve - запускается сервер встроенный в PHP, который (как упоминалось выше) HTTPS - не поддерживает. Я думаю, Вам стоит либо запускать проект в рамках непосредственно OpenServer'а, который поддерживает оба протокола сразу (и HTTP и HTTPS), либо, Вы можете попробовать воспользоваться Homestand (готовая и настроенная для разработки ОС Linux, поставляемая самими разработчиками Laravel, вместе с Nginx, MariaDB, PostgreSQL и прочими плюшками). Разработка в "родной" среде, позволит Вам не только избавиться от описанных выше проблем, но и от массы других, например ошибки с регистром букв в именах файлах (к которым чувствительны большинство файловых систем *nix, в отличии от FAT/NTFS в Windows).

    P.S. Для установки/запуска Homestand, Вам не нужно переустанавливать текущую ОС, он прекрасно работает как в Linux, так и в Windows, достаточно установить VMWare или VirtualBox.
    Ответ написан
    Комментировать