Laravel по-русски

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

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

#1 Re: Laravel 5.x » Как отслеживать, пользователь онлайн или оффлайн? » 21.05.2021 17:17:34

Проще, но, увы, неправильно. Пользователь может что-то читать или смотреть на странице, и ещё, пока он на какой-либо странице сидит, другие пользователи могут отправлять ему сообщения и видеть, что он онлайн.

#2 Laravel 5.x » Как отслеживать, пользователь онлайн или оффлайн? » 21.05.2021 03:31:23

taraks
Ответов: 6

В случае, когда пользователь сам нажимает кнопку Выйти, легко отследить и принять, что теперь он оффлайн, а при следующем посещении сайта ему нужно будет залогиниться.
А вот если пользователь закрыл все вкладки с сайтом, то тут тоже нужно считать, что он оффлайн. А когда он снова открывает складку с сайтом, то ему не надо заново логиниться. Подскажите, как отслеживать такую ситуацию и как сделать, чтобы пользователю не нужно было снова логиниться в этом случае?

Используется laravel 5.7

#3 Re: Laravel 5.x » Серверные события при наступлении определённого времени? » 24.03.2019 08:40:13

Получилось всё настроить + планировщик винды. Но! Один момент остался - если задач несколько на одно и то же время - их же надо запустить разом и параллельно в несколько процессов, а пока что в команде, которая делает запрос на подошедшие по времени задачи, в цикле для каждой найденной задачи вызывается соответствующая функция. А как же их запускать параллельно в одно время?

#4 Re: Laravel 5.x » Серверные события при наступлении определённого времени? » 22.03.2019 22:01:01

Спасибо! Идея интересная, смущает только способ хранения и выбора задач -

Пусть эта команда делает запрос в таблице заданий

задачи могут часами висеть в ожидании, соответственно, их там накопится...уйма. Каждую минуту дёргать всю таблицу на сотни тысяч записей и проверять в них даты - хорошая ли практика?

таблица заданий (at datetime, command varchar(100), arguments text)

(и, кстати, ключ-то составной будет, id ещё нужен, т.к. at datetime может быть один и тот же у нескольких задач. Либо не составной, а первичный - id, а at datetime - просто индекс)

#5 Laravel 5.x » Серверные события при наступлении определённого времени? » 21.03.2019 17:54:57

taraks
Ответов: 5

Здравствуйте!

Подскажите, каким образом можно реализовать серверные события по времени? Нужно выполнять много разных задач при наступлении определённых даты/времени (у каждой задачи прописаны эти дата/время).
Если более подробно, то:
1. Пользователи могут включать какие-то события, т.е. жмут кнопку, сервер производит какие-то действия, расчёты, обновляет данные в бд (postgresql) ставя в них дату/время начала и расчитанные дату/время окончания для этого события и этого юзера.
2. Уже есть заготовленные события, которые вызываются в определённое время, напр. каждый вторник в 15:15 всем юзерам выдать такое-то сообщение, или определённые данные в бд обновить или ещё что.
Нужно: отслеживать, подошли ли дата/время этих событий; когда подошли - вызвать соответствующий событию метод, обновить
данные в бд, если нужно - выдать уведомления одному или нескольким юзерам или запустить ещё какое-то событие, так же отслеживаемое.

Т.е., как я это вижу пока, каждую секунду (либо минуту, пока ещё не решено длительность задач будет кратна секунде или минуте) нужно проверять весь список имеющихся задач и сравнивать их дату/время с наступившим временем на сервере. Если совпало, то выполнить эту задачу.

Мне посоветовали очереди с redis, прочитала, но вроде они не позволяют выполнять задачи по времени, а просто выполняют задачи одну за другой. Или это не так? Что тогда подходит для решения данного случая?

P.S.: использую Laravel 5.4, postgresql 11.1, xampp - php 7.2.0, apache 2.4.29, windows 10.

#6 Re: Laravel 5.x » Как средствами eloquent создавать запросы такого типа? » 07.12.2018 12:34:35

Мм, интересный вариант. Спасибо, попробую!
(всё-таки это странно, что для построения самых простецких запросов с перечислением связанных таблиц в from не добавили простого метода from, и поэтому нужно всячески изгаляться)

#7 Re: Laravel 5.x » Как средствами eloquent создавать запросы такого типа? » 07.12.2018 11:00:22

Можете привести прямо нужные строчки из статьи, где это описано? Я вот не нашла, кроме join(), потому и спросила. DB:select() пока и использую, но это сырой запрос, и возвращает он не коллекцию, а массив, что очень начинает затруднять при дальнейшем использовании этих данных( В коллекции много полезных методов, а тут массив с какого-то..(

#8 Laravel 5.x » Как средствами eloquent создавать запросы такого типа? » 06.12.2018 22:54:30

taraks
Ответов: 4

Здравствуйте!
Есть 2 таблицы:
users
id
id_depart

departments
id
type

Как в laravel 5.4 средствами eloquent создавать запросы такого типа (с несколькими таблицами в from без join)?

SELECT users.*
FROM users, deraptments
WHERE users.id_depart = departments.id
WHERE departments.type = 3

#9 Re: Laravel 5.x » Не работает симлинк на storage/app/public. Какие варианты? » 06.04.2018 20:32:08

Хз, у меня заработало с изменением

$path = storage_path('public/' . $filename);

на

$path = storage_path('app\public\\' . $filename);

а урл такой

http://www.my.local/storage/images/1.jpg

#10 Re: Laravel 5.x » Не работает симлинк на storage/app/public. Какие варианты? » 06.04.2018 18:57:50

В общем, кому нужно, чтобы правильно работали ссылки на storage/app/public можно использовать вот такой вариант, взятый отсюда:

Route::get('storage/{filename}', function ($filename)
{
    $path = storage_path('app\public\\' . $filename);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

#11 Laravel 5.x » Не работает симлинк на storage/app/public. Какие варианты? » 01.04.2018 17:12:05

taraks
Ответов: 3

Здравствуйте!
На ноуте стоит windows 7 х64, xampp - php 7.2.0, apache 2.4.29 (Win32).
После смены режима в xampp с cgi на php как модуль apache в laravel перестала работать символическая ссылка на storage/app/public. При открытии www.mysite.local/storage попадаю в папку public/storage вместо storage/app/public. Делаю artisan storage:link получаю - The "public/storage" directory already exists. Подскажите, в чём может быть дело? Как исправить?
Или есть альтернативные варианты получения ссылок на файлы из storage/app/public, без символической ссылки? Или просто перенести оттуда файлы в public/storage? 
Содержимое config\filesystem.php:

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

P.S.: короче говоря, как прописывать теперь ссылки на файлы без символической ссылки?..

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