Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/ed691f3f
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.
🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг
👉 Подробная программа обучения
А по промокоду
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
Что такое планировщик задач в Laravel и как он используется?
В Laravel планировщик задач — это функция, которая позволяет управлять запланированными задачами на вашем сервере внутри вашего приложения Laravel. Он предоставляет чистый, плавный API для определения ваших запланированных задач простым и удобным способом.
Вот как вы можете использовать его:
Определение запланированных задач: Вы можете определить все свои запланированные задачи в методе schedule класса App\Console\Kernel.
Запуск планировщика задач: Чтобы запустить планировщик Laravel, вам нужно добавить следующую запись Cron на ваш сервер.
Этот Cron будет вызывать команду планировщика Laravel каждую минуту для выполнения запланированных задач.
Помните, что будут выполняться только задачи, которые должны быть выполнены. Команда schedule:run будет проверять расписание задач и выполнять все задачи, которые должны быть выполнены.
Ограничения задач: Вы также можете добавить дополнительные ограничения к расписанию, такие как
Вывод задач: По умолчанию вывод запланированных задач будет направлен в /dev/null. Вы можете использовать методы
В Laravel планировщик задач — это функция, которая позволяет управлять запланированными задачами на вашем сервере внутри вашего приложения Laravel. Он предоставляет чистый, плавный API для определения ваших запланированных задач простым и удобным способом.
Вот как вы можете использовать его:
Определение запланированных задач: Вы можете определить все свои запланированные задачи в методе schedule класса App\Console\Kernel.
Запуск планировщика задач: Чтобы запустить планировщик Laravel, вам нужно добавить следующую запись Cron на ваш сервер.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1Этот Cron будет вызывать команду планировщика Laravel каждую минуту для выполнения запланированных задач.
Помните, что будут выполняться только задачи, которые должны быть выполнены. Команда schedule:run будет проверять расписание задач и выполнять все задачи, которые должны быть выполнены.
Ограничения задач: Вы также можете добавить дополнительные ограничения к расписанию, такие как
->weekdays(), ->sundays(), ->at('13:00') и т.д.Вывод задач: По умолчанию вывод запланированных задач будет направлен в /dev/null. Вы можете использовать методы
sendOutputTo и appendOutputTo для записи или добавления вывода в определенный файл.🥱6👍3
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Офер от Сбера за один клик 💼
Мечтаешь работать в Сбере, теперь это проще, чем когда-либо!
💡 AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить офер?
📌 Зарегистрируйся
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
После прохождения твои ответы получат рекрутеры и свяжутся с тобой в течение нескольких дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzqxS96Na
Мечтаешь работать в Сбере, теперь это проще, чем когда-либо!
💡 AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить офер?
📌 Зарегистрируйся
📌 Пройди AI-интервью
📌 Получи обратную связь сразу же!
После прохождения твои ответы получат рекрутеры и свяжутся с тобой в течение нескольких дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzqxS96Na
🥱4
Media is too big
VIEW IN TELEGRAM
Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1😁1🥱1
Отобрали для вас полезные и проверенные каналы для программистов — в них вы найдете все самое интересное, от технических новостей до практических гайдов.
IT Job Hub | Работа и вакансии в IT — избранные IT-вакансии
Библиотека программиста — новости из мира IT и технологий
Книги для программистов — самые годные книги по любым языкам и стекам
IT-мемы — мемы про жизу айтишника
Proglib Academy — обучение и курсы, чтобы стать топовым специалистом
Азбука айтишника — азы из мира разработки
Библиотека нейросетей — лайфхаки и промпты для разных задач, баттлы нейронок и новости из мира ИИ
Библиотека фронтендера — все о JS, React, Angular и не только
Библиотека мобильного разработчика — лайфхаки и новости из мира Swift и Kotlin
Библиотека хакера — уязвимости, атаки, бэкдоры и как от них защититься
Библиотека тестировщика — самое интересное о том, как крашить код
🦫 Go
Библиотека Go-разработчика
Библиотека задач по Go
Библиотека Go для собеса
Вакансии по Go
#️⃣ C#
Библиотека шарписта
Библиотека задач по C#
Библиотека собеса по C#
Вакансии по C#
🔧 DevOps
Библиотека devops’а
Библиотека задач по DevOps
Библиотека собеса по DevOps
Вакансии по DevOps & SRE
🐘 PHP
Библиотека пхпшника
Библиотека задач по PHP
Библиотека PHP для собеса
Вакансии по PHP, Symfony, Laravel
🐍 Python
Библиотека питониста
Библиотека Python для собеса
Библиотека задач по Python
Вакансии по питону, Django, Flask
☕️ Java
Библиотека джависта
Библиотека задач по Java
Библиотека Java для собеса
Вакансии по Java
📊 Data Science
Библиотека дата-сайентиста
Библиотека задач по Data Science
Библиотека Data Science для собеса
Вакансии по Data Science
🎮 C++
Библиотека C/C++ разработчика
Библиотека задач по C++
Библиотека C++ для собеса
Вакансии по C++
Подписывайтесь на интересные вам каналы и сохраняйте пост в закладки, чтобы не потерять 🔑
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Библиотека собеса по PHP | вопросы с собеседований pinned «🏃♀️ 40+ каналов, которые должен читать каждый разработчик Отобрали для вас полезные и проверенные каналы для программистов — в них вы найдете все самое интересное, от технических новостей до практических гайдов. IT Job Hub | Работа и вакансии в IT — избранные…»
В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.
❓Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.
— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас все-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚2❤1
Что нового в РНР 8?
🚀 PHP 8.0
JIT-компиляция: Just-In-Time компилятор улучшает производительность, особенно в вычислительных задачах.
Атрибуты (аннотации): Позволяют добавлять метаданные к классам, методам и свойствам, улучшая читаемость и поддержку кода.
Сопоставление с образцом (match expression): Более строгая и удобная альтернатива конструкции
Промоция свойств конструктора: Уменьшает количество кода при объявлении свойств в конструкторе.
Объединённые типы (union types): Позволяют указывать несколько типов для параметров и возвращаемых значений.
Оператор nullsafe (
Новые строки функций:
Интерфейс
Функция
🔧 PHP 8.1
Перечисления (enums): Позволяют создавать наборы констант с типовой безопасностью.
Только для чтения свойства (
Тип
Синтаксис для первого класса callable: Упрощает создание и использование функций как объектов.
Fibers: Позволяют реализовывать кооперативную многозадачность, полезно для асинхронного кода.
🧪 PHP 8.2
Типы
Динамические свойства устарели: Предотвращает ошибки при случайном добавлении свойств в объекты.
Атрибут
🔍 PHP 8.3
Типизация констант классов: Позволяет задавать типы для констант внутри классов.
Атрибут
Глубокое копирование только для чтения свойств: Обеспечивает корректное поведение при копировании объектов.
Новые функции для работы с случайными значениями: Упрощают генерацию случайных данных.
🧩 PHP 8.4
Хуки свойств (Property Hooks): Возможность определять логику для геттеров и сеттеров непосредственно в свойстве, что упрощает код и уменьшает количество шаблонного кода.
Асимметричная видимость (Asymmetric Visibility): Позволяет задавать разные уровни доступа для чтения и записи свойств, например, сделать свойство доступным только для чтения.
Инстанцирование классов без скобок: Теперь можно вызывать методы сразу после создания объекта без необходимости оборачивать конструкцию в дополнительные скобки.
Новые функции для работы с массивами:
Поддержка HTML5 в расширении DOM: Расширение DOM теперь поддерживает HTML5, улучшая работу с современными веб-страницами.
Новые функции для работы со строками:
Поддержка HTTP/3 в cURL: Добавлены константы
Новые методы для DateTimeImmutable: Методы
🚀 PHP 8.0
JIT-компиляция: Just-In-Time компилятор улучшает производительность, особенно в вычислительных задачах.
Атрибуты (аннотации): Позволяют добавлять метаданные к классам, методам и свойствам, улучшая читаемость и поддержку кода.
Сопоставление с образцом (match expression): Более строгая и удобная альтернатива конструкции
switch.Промоция свойств конструктора: Уменьшает количество кода при объявлении свойств в конструкторе.
Объединённые типы (union types): Позволяют указывать несколько типов для параметров и возвращаемых значений.
Оператор nullsafe (
?->): Упрощает работу с возможными null значениями, предотвращая ошибки.Новые строки функций:
str_contains(), str_starts_with(), str_ends_with() — для удобной работы со строками.Интерфейс
Stringable: Упрощает работу с объектами, которые могут быть приведены к строке.Функция
get_debug_type(): Предоставляет точный тип переменной для отладки.🔧 PHP 8.1
Перечисления (enums): Позволяют создавать наборы констант с типовой безопасностью.
Только для чтения свойства (
readonly): Свойства, которые можно инициализировать только один раз.Тип
never: Указывает, что функция никогда не возвращает значение (например, всегда выбрасывает исключение).Синтаксис для первого класса callable: Упрощает создание и использование функций как объектов.
Fibers: Позволяют реализовывать кооперативную многозадачность, полезно для асинхронного кода.
🧪 PHP 8.2
Типы
null, false, true как отдельные типы: Улучшает типовую безопасность.Динамические свойства устарели: Предотвращает ошибки при случайном добавлении свойств в объекты.
Атрибут
#[SensitiveParameter]: Помечает параметры, содержащие чувствительную информацию, для предотвращения их логирования.🔍 PHP 8.3
Типизация констант классов: Позволяет задавать типы для констант внутри классов.
Атрибут
#[\Override]: Указывает, что метод переопределяет родительский.Глубокое копирование только для чтения свойств: Обеспечивает корректное поведение при копировании объектов.
Новые функции для работы с случайными значениями: Упрощают генерацию случайных данных.
🧩 PHP 8.4
Хуки свойств (Property Hooks): Возможность определять логику для геттеров и сеттеров непосредственно в свойстве, что упрощает код и уменьшает количество шаблонного кода.
Асимметричная видимость (Asymmetric Visibility): Позволяет задавать разные уровни доступа для чтения и записи свойств, например, сделать свойство доступным только для чтения.
Инстанцирование классов без скобок: Теперь можно вызывать методы сразу после создания объекта без необходимости оборачивать конструкцию в дополнительные скобки.
Новые функции для работы с массивами:
array_find(), array_find_key(), array_any(), array_all() упрощают поиск и проверку элементов в массивах. Поддержка HTML5 в расширении DOM: Расширение DOM теперь поддерживает HTML5, улучшая работу с современными веб-страницами.
Новые функции для работы со строками:
mb_trim(), mb_ucfirst(), mb_lcfirst() предоставляют дополнительные возможности для обработки многобайтовых строк. Поддержка HTTP/3 в cURL: Добавлены константы
CURL_HTTP_VERSION_3 и CURL_HTTP_VERSION_3ONLY для работы с протоколом HTTP/3. Новые методы для DateTimeImmutable: Методы
createFromTimestamp() и get/setMicrosecond() облегчают работу с временными метками и микросекундами.❤3👍2❤🔥1
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».
Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».
📅 Сроки: с 29 апреля по 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Ждем ваших новостей!
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».
Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».
📅 Сроки: с 29 апреля по 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Ждем ваших новостей!
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
🐘 Квиз для PHP-разработчиков: ответишь на все вопросы или сольешься?
Проверь свои знания PHP перед собеседованием: тест с вопросами о типах данных, функциях, директивах и классах. Идеально для разработчиков, готовящихся к техническому интервью.
👉 Пройти тест
Проверь свои знания PHP перед собеседованием: тест с вопросами о типах данных, функциях, директивах и классах. Идеально для разработчиков, готовящихся к техническому интервью.
👉 Пройти тест
🌚2
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Google Docs
Конкурс на самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
👍1
Какой overhead у persistent соединений в PDO?
Использование постоянных соединений в PDO (через
⚙️ Как работают постоянные соединения в PDO
При использовании постоянных соединений PHP не закрывает соединение с базой данных после завершения скрипта. Вместо этого соединение сохраняется и может быть повторно использовано другим скриптом, если он использует те же параметры подключения. Это позволяет избежать затрат на установку нового соединения при каждом запросе, что может улучшить производительность приложения.
📈 Потенциальные преимущества
Снижение накладных расходов: Избегание повторной установки соединений может ускорить выполнение скриптов.
Повышение производительности: Особенно заметно при работе с удалёнными базами данных или при высокой нагрузке на сервер.
⚠️ Возможные недостатки
Ограничения на количество соединений: Каждый процесс может удерживать своё постоянное соединение, что может привести к превышению лимита соединений на сервере базы данных.
Состояние соединения: Если скрипт завершился с ошибкой или не освободил ресурсы (например, блокировки или транзакции), следующее использование этого соединения может столкнуться с проблемами.
Совместимость с драйверами: Некоторые драйверы, такие как ODBC, могут не поддерживать постоянные соединения должным образом, что может привести к нестабильной работе.
✅ Рекомендации по использованию
Оцените необходимость: Используйте постоянные соединения, если установка соединения с базой данных является узким местом в производительности.
Мониторинг: Следите за количеством активных соединений и состоянием базы данных, чтобы избежать превышения лимитов и других проблем.
Очистка ресурсов: Убедитесь, что скрипты корректно завершают транзакции и освобождают ресурсы перед завершением работы.
Тестирование: Проведите нагрузочное тестирование с включёнными и отключёнными постоянными соединениями, чтобы определить оптимальный вариант для вашего приложения.
Таким образом, постоянные соединения в PDO могут быть полезны для повышения производительности, но требуют внимательного подхода и мониторинга для предотвращения потенциальных проблем.
Использование постоянных соединений в PDO (через
PDO::ATTR_PERSISTENT => true) может снизить накладные расходы на установку соединений с базой данных, особенно если соединение требует значительных ресурсов. Однако этот подход имеет свои особенности и потенциальные недостатки.⚙️ Как работают постоянные соединения в PDO
При использовании постоянных соединений PHP не закрывает соединение с базой данных после завершения скрипта. Вместо этого соединение сохраняется и может быть повторно использовано другим скриптом, если он использует те же параметры подключения. Это позволяет избежать затрат на установку нового соединения при каждом запросе, что может улучшить производительность приложения.
📈 Потенциальные преимущества
Снижение накладных расходов: Избегание повторной установки соединений может ускорить выполнение скриптов.
Повышение производительности: Особенно заметно при работе с удалёнными базами данных или при высокой нагрузке на сервер.
⚠️ Возможные недостатки
Ограничения на количество соединений: Каждый процесс может удерживать своё постоянное соединение, что может привести к превышению лимита соединений на сервере базы данных.
Состояние соединения: Если скрипт завершился с ошибкой или не освободил ресурсы (например, блокировки или транзакции), следующее использование этого соединения может столкнуться с проблемами.
Совместимость с драйверами: Некоторые драйверы, такие как ODBC, могут не поддерживать постоянные соединения должным образом, что может привести к нестабильной работе.
✅ Рекомендации по использованию
Оцените необходимость: Используйте постоянные соединения, если установка соединения с базой данных является узким местом в производительности.
Мониторинг: Следите за количеством активных соединений и состоянием базы данных, чтобы избежать превышения лимитов и других проблем.
Очистка ресурсов: Убедитесь, что скрипты корректно завершают транзакции и освобождают ресурсы перед завершением работы.
Тестирование: Проведите нагрузочное тестирование с включёнными и отключёнными постоянными соединениями, чтобы определить оптимальный вариант для вашего приложения.
Таким образом, постоянные соединения в PDO могут быть полезны для повышения производительности, но требуют внимательного подхода и мониторинга для предотвращения потенциальных проблем.
Какие различия между первичным и уникальным ключами?
«Первичный ключ» (Primary Key) и «уникальный ключ» (Unique Key) — это оба типа ограничений баз данных, используемых для обеспечения уникальности значений в столбцах таблиц. Однако существуют определенные различия в их использовании и семантике:
Уникальность:
Первичный ключ: Одна из основных особенностей первичного ключа — это то, что он должен быть уникальным для каждой записи в таблице. Он не может содержать значения NULL, и каждая строка в таблице должна иметь уникальное значение первичного ключа.
Уникальный ключ: Уникальный ключ также гарантирует уникальность значений в столбце или группе столбцов. Однако в отличие от первичного ключа, столбец, имеющий уникальный ключ, может содержать значение NULL, и таблица может иметь несколько строк с NULL в уникальном ключе.
NULL-значения:
Первичный ключ: Не может содержать NULL-значений. Все значения первичного ключа должны быть заполнены.
Уникальный ключ: Может содержать одно NULL-значение. Если столбец с уникальным ключом разрешает NULL, то однако может быть только одна строка с NULL в этом столбце.
Число ключей:
Первичный ключ: В таблице может быть только один первичный ключ.
Уникальный ключ: В таблице может быть несколько уникальных ключей. Каждый уникальный ключ предоставляет другой способ гарантировать уникальность значений.
Семантика использования:
Первичный ключ: Используется для однозначной идентификации каждой строки в таблице. Часто используется в качестве внешнего ключа в других таблицах.
Уникальный ключ: Используется для обеспечения уникальности значений, но не обязательно для идентификации каждой строки. Может использоваться, например, для уникальных номеров телефонов или электронных адресов в таблице клиентов.
«Первичный ключ» (Primary Key) и «уникальный ключ» (Unique Key) — это оба типа ограничений баз данных, используемых для обеспечения уникальности значений в столбцах таблиц. Однако существуют определенные различия в их использовании и семантике:
Уникальность:
Первичный ключ: Одна из основных особенностей первичного ключа — это то, что он должен быть уникальным для каждой записи в таблице. Он не может содержать значения NULL, и каждая строка в таблице должна иметь уникальное значение первичного ключа.
Уникальный ключ: Уникальный ключ также гарантирует уникальность значений в столбце или группе столбцов. Однако в отличие от первичного ключа, столбец, имеющий уникальный ключ, может содержать значение NULL, и таблица может иметь несколько строк с NULL в уникальном ключе.
NULL-значения:
Первичный ключ: Не может содержать NULL-значений. Все значения первичного ключа должны быть заполнены.
Уникальный ключ: Может содержать одно NULL-значение. Если столбец с уникальным ключом разрешает NULL, то однако может быть только одна строка с NULL в этом столбце.
Число ключей:
Первичный ключ: В таблице может быть только один первичный ключ.
Уникальный ключ: В таблице может быть несколько уникальных ключей. Каждый уникальный ключ предоставляет другой способ гарантировать уникальность значений.
Семантика использования:
Первичный ключ: Используется для однозначной идентификации каждой строки в таблице. Часто используется в качестве внешнего ключа в других таблицах.
Уникальный ключ: Используется для обеспечения уникальности значений, но не обязательно для идентификации каждой строки. Может использоваться, например, для уникальных номеров телефонов или электронных адресов в таблице клиентов.
👍2👾2
Как вы используете систему событий в Laravel?
Система событий в Laravel позволяет разработчикам создавать события и слушателей, которые могут быть использованы для выполнения определенного кода при наступлении определенных событий в приложении.
В этом примере мы создали событие
Система событий в Laravel позволяет разработчикам создавать события и слушателей, которые могут быть использованы для выполнения определенного кода при наступлении определенных событий в приложении.
В этом примере мы создали событие
UserRegistered и слушатель SendWelcomeEmail. Когда пользователь регистрируется, мы можем отправить событие UserRegistered, а слушатель SendWelcomeEmail обработает это событие, отправив новому пользователю приветственное письмо.Что такое миграции?
Миграции (migrations) обозначают процесс изменения структуры базы данных. Этот процесс позволяет разработчикам эффективно управлять и обновлять схему базы данных в процессе развития приложения, минимизируя при этом потерю данных.
Основные концепции миграций в PHP включают:
1️⃣Создание миграции: Разработчик определяет, какие изменения нужно внести в базу данных, и записывает их в виде миграции. Это может быть создание новой таблицы, добавление/удаление столбца и т.д.
2️⃣Применение миграции: При необходимости разработчик применяет миграции к базе данных. Это приводит к выполнению всех определенных в миграциях SQL-запросов, изменяющих структуру базы данных.
3️⃣Откат миграции: В случае необходимости можно откатывать миграции, что означает отмену изменений, внесенных предыдущей миграцией. Это полезно, например, при отладке или при необходимости вернуть базу данных к предыдущему состоянию.
Примеры PHP-фреймворков и инструментов, предоставляющих возможности для работы с миграциями, включают Laravel (через механизм миграций Laravel), Symfony (Doctrine Migrations), Phinx и другие. В этих фреймворках миграции часто реализуются в виде кода на PHP, обеспечивая удобство в создании и управлении изменениями в базе данных.
Миграции (migrations) обозначают процесс изменения структуры базы данных. Этот процесс позволяет разработчикам эффективно управлять и обновлять схему базы данных в процессе развития приложения, минимизируя при этом потерю данных.
Основные концепции миграций в PHP включают:
1️⃣Создание миграции: Разработчик определяет, какие изменения нужно внести в базу данных, и записывает их в виде миграции. Это может быть создание новой таблицы, добавление/удаление столбца и т.д.
2️⃣Применение миграции: При необходимости разработчик применяет миграции к базе данных. Это приводит к выполнению всех определенных в миграциях SQL-запросов, изменяющих структуру базы данных.
3️⃣Откат миграции: В случае необходимости можно откатывать миграции, что означает отмену изменений, внесенных предыдущей миграцией. Это полезно, например, при отладке или при необходимости вернуть базу данных к предыдущему состоянию.
Примеры PHP-фреймворков и инструментов, предоставляющих возможности для работы с миграциями, включают Laravel (через механизм миграций Laravel), Symfony (Doctrine Migrations), Phinx и другие. В этих фреймворках миграции часто реализуются в виде кода на PHP, обеспечивая удобство в создании и управлении изменениями в базе данных.
Как очистить кэш Symfony?
Для очистки кэша в Symfony можно использовать команду «
С помощью этой команды вы можете удалить все данные из директории хранилища проекта. В Symfony поставляются три стандартных очистителя кэша:
Для очистки кэша в Symfony можно использовать команду «
cache:pool:clear».С помощью этой команды вы можете удалить все данные из директории хранилища проекта. В Symfony поставляются три стандартных очистителя кэша:
app_clearer, system_clearer и global_clearer.🚨 Смешные новости про IT теперь в одном канале
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Опишите жизненный цикл HTTP-запроса.
Жизненный цикл HTTP-запроса в PHP можно разделить на следующие этапы:
1️⃣ Инициация запроса: Когда клиент отправляет HTTP-запрос на сервер, он инициирует процесс обработки запроса. В PHP это может быть инициировано, например, через браузер или с помощью команды curl в командной строке.
2️⃣ Маршрутизация: После получения запроса сервер должен определить, какой код или файл должен обрабатывать этот запрос. В PHP это может быть определено с помощью файла .htaccess или механизма маршрутизации, такого как маршрутизатор в фреймворке.
3️⃣ Обработка запроса: Когда PHP определяет, какой код или файл должен обработать запрос, он запускает этот код или файл. Этот этап включает выполнение кода, чтение и обработку данных, выполнение операций с базой данных и другие операции, необходимые для обработки запроса.
4️⃣ Генерация и отправка ответа: После обработки запроса PHP генерирует данные, которые должны быть отправлены обратно клиенту. Это может включать в себя генерацию HTML-страницы, отправку изображений, создание и отправку JSON-ответов и т. д. Затем PHP отправляет созданный ответ обратно на клиентскую сторону.
5️⃣ Завершение обработки запроса: После отправки ответа PHP завершает обработку запроса, освобождает ресурсы, которые были использованы во время обработки, и завершает свое выполнение.
Жизненный цикл HTTP-запроса в PHP можно разделить на следующие этапы:
1️⃣ Инициация запроса: Когда клиент отправляет HTTP-запрос на сервер, он инициирует процесс обработки запроса. В PHP это может быть инициировано, например, через браузер или с помощью команды curl в командной строке.
2️⃣ Маршрутизация: После получения запроса сервер должен определить, какой код или файл должен обрабатывать этот запрос. В PHP это может быть определено с помощью файла .htaccess или механизма маршрутизации, такого как маршрутизатор в фреймворке.
3️⃣ Обработка запроса: Когда PHP определяет, какой код или файл должен обработать запрос, он запускает этот код или файл. Этот этап включает выполнение кода, чтение и обработку данных, выполнение операций с базой данных и другие операции, необходимые для обработки запроса.
4️⃣ Генерация и отправка ответа: После обработки запроса PHP генерирует данные, которые должны быть отправлены обратно клиенту. Это может включать в себя генерацию HTML-страницы, отправку изображений, создание и отправку JSON-ответов и т. д. Затем PHP отправляет созданный ответ обратно на клиентскую сторону.
5️⃣ Завершение обработки запроса: После отправки ответа PHP завершает обработку запроса, освобождает ресурсы, которые были использованы во время обработки, и завершает свое выполнение.
👍2🌚2🤔1
Как работает JIT-компилятор в PHP 8, и когда он дает реальный прирост производительности?
JIT-компилятор (Just-In-Time), представленный в PHP 8, представляет собой значительное нововведение, направленное на повышение производительности за счёт компиляции PHP-кода в машинный код во время выполнения.
⚙️ Как работает JIT в PHP 8
В традиционном исполнении PHP-кода интерпретатор Zend Engine преобразует PHP-скрипты в байткод (опкоды), который затем интерпретируется при каждом запросе. С внедрением JIT-компилятора этот процесс дополняется возможностью компиляции часто вызываемых частей кода непосредственно в машинный код, который может выполняться напрямую процессором, минуя интерпретатор. Это позволяет ускорить выполнение кода, особенно в случаях интенсивных вычислений. JIT в PHP 8 работает в двух режимах: function JIT (компиляция целых функций) и tracing JIT (компиляция часто используемых участков кода).
🚀 Когда JIT действительно улучшает производительность
Хотя JIT-компиляция может значительно ускорить выполнение определённых типов задач, её влияние на производительность зависит от характера приложения:
Интенсивные вычисления: Значительное улучшение производительности наблюдается при выполнении задач, требующих интенсивных вычислений, таких как обработка больших массивов данных, математические операции или машинное обучение.
Типичные веб-приложения: Для большинства веб-приложений, таких как сайты на WordPress или фреймворках Laravel и Symfony, прирост производительности от JIT незначителен, поскольку основное время выполнения уходит на операции ввода-вывода, работу с базами данных и сетевые запросы, которые не ускоряются JIT-компиляцией.
⚠️ Возможные недостатки и ограничения
Сложность отладки: Ошибки в JIT-компилированном коде могут быть труднее для диагностики, особенно если они приводят к сбоям или некорректному поведению.
Совместимость: Некоторые расширения или специфические конструкции PHP-кода могут не работать корректно с JIT, что требует дополнительного тестирования при его включении.
Потребление ресурсов: JIT-компиляция требует дополнительной памяти для хранения скомпилированного кода, что может быть критично на серверах с ограниченными ресурсами.
JIT-компилятор (Just-In-Time), представленный в PHP 8, представляет собой значительное нововведение, направленное на повышение производительности за счёт компиляции PHP-кода в машинный код во время выполнения.
⚙️ Как работает JIT в PHP 8
В традиционном исполнении PHP-кода интерпретатор Zend Engine преобразует PHP-скрипты в байткод (опкоды), который затем интерпретируется при каждом запросе. С внедрением JIT-компилятора этот процесс дополняется возможностью компиляции часто вызываемых частей кода непосредственно в машинный код, который может выполняться напрямую процессором, минуя интерпретатор. Это позволяет ускорить выполнение кода, особенно в случаях интенсивных вычислений. JIT в PHP 8 работает в двух режимах: function JIT (компиляция целых функций) и tracing JIT (компиляция часто используемых участков кода).
🚀 Когда JIT действительно улучшает производительность
Хотя JIT-компиляция может значительно ускорить выполнение определённых типов задач, её влияние на производительность зависит от характера приложения:
Интенсивные вычисления: Значительное улучшение производительности наблюдается при выполнении задач, требующих интенсивных вычислений, таких как обработка больших массивов данных, математические операции или машинное обучение.
Типичные веб-приложения: Для большинства веб-приложений, таких как сайты на WordPress или фреймворках Laravel и Symfony, прирост производительности от JIT незначителен, поскольку основное время выполнения уходит на операции ввода-вывода, работу с базами данных и сетевые запросы, которые не ускоряются JIT-компиляцией.
⚠️ Возможные недостатки и ограничения
Сложность отладки: Ошибки в JIT-компилированном коде могут быть труднее для диагностики, особенно если они приводят к сбоям или некорректному поведению.
Совместимость: Некоторые расширения или специфические конструкции PHP-кода могут не работать корректно с JIT, что требует дополнительного тестирования при его включении.
Потребление ресурсов: JIT-компиляция требует дополнительной памяти для хранения скомпилированного кода, что может быть критично на серверах с ограниченными ресурсами.
👍5