Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
в api я не нашёл. По крайней мере для 12 версии.
Посмотрите здесь https://laravel.com/docs/12.x/helpers#method-retry
В Laravel можно настроить автоматическое восстановление соединения с MySQL несколькими способами:
- Использование PDO::ATTR_PERSISTENT
В файле config/database.php добавьте параметр PDO::ATTR_PERSISTENT в настройки MySQL:
- Это позволит Laravel повторно использовать соединение, вместо создания нового.
- Обработка ошибок соединения
В коде можно перехватывать ошибки соединения и повторять запрос:
use Illuminate\Database\QueryException;
try {
// Ваш запрос к базе данных
} catch (QueryException $e) {
if ($e->getCode() === 'HY000') {
// Повторное подключение
DB::reconnect();
}
}
- Использование Laravel Retry Helper
Laravel предоставляет удобный способ повторного выполнения запроса:
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Retry;
Retry::times(3)->catch(function () {
DB::reconnect();
})->run(function () {
// Ваш запрос
});
Это тоже Copilot. Мож поможет.
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Вот, что ответил Copilot . Он правда не всегда прав , но если его довести до белого кaления, можно добиться результатов.
Конечно! Ошибка SQLSTATE[HY000]: General error: 2006 MySQL server has gone away обычно возникает, когда сервер MySQL неожиданно закрывает соединение. Вот возможные причины и способы их устранения:
- Увеличьте max_allowed_packet: Если запрос содержит большие данные, попробуйте увеличить этот параметр в конфигурации MySQL (my.cnf или my.ini).
- Настройте wait_timeout: Если сервер закрывает неактивные соединения слишком быстро, увеличьте значение wait_timeout в конфигурации MySQL.
- Проверьте стабильность сети: Нестабильное подключение может привести к неожиданному обрыву соединения.
- Проверьте настройки базы данных: Убедитесь, что в файле .env Laravel указаны правильные хост, порт и учетные данные.
- Включите авто-подключение: Некоторые клиенты MySQL поддерживают автоматическое восстановление соединения при его потере.
Попробуйте эти решения и сообщите, если потребуется дополнительная помощь!
Всем привет . На линуксе не получилось , решил использовать XAMPP. Проблема заключается в разрядности. У меня MS Office 2007 -32 bit , а XAMPP и PHP -64 bit. Пробовал помощи Copilot , но результат 0. Драйвер Microsoft Database Engine - 64 bit не устанавливается , 32 бит не работает . Попробовал Devart ODBC Driver . Работает нормально. Но этот драйвер платный. Кто нибудь может подсказать как подключиться используя бесплатные драйвера??????
Для подключения к файлу .mdb Access из Ubuntu 24 с Laravel 12 и PHP 8.3 вам потребуется установить unixODBC и MDBTools.
Спасибо за Ваш ответ, а нельзя ли поподробнее . Я и ранее нашел этот драйвер в инете, но только платный , и цена его космическая ,под 1000$. Или я что то не так понял? Спасибо.
Всем привет решил вернуться к этой теме.Мне нужно подключиться к файлу mdb access . На данный момент установлено Ubuntu 24, Laravel 12 , PHP 8.3 . Сам занимаюсь поиском информации в интернете . Но очень буду благодарен за помощь. Заранее спасибо.
Всем привет решил вернуться к этой теме.Мне нужно подключиться к файлу mdb access . На данный момент установлено Ubuntu 24, Laravel 12 , PHP 8.3 . Сам занимаюсь поиском информации в интернете . Но очень буду благодарен за помощь. Заранее спасибо.
Привет всем собственно вопрос в заголовке . Решил испробовать эту связку , но столкнулся с проблемой несовпадения типов. Использую PHP Storm . Методом проб и ошибок добился что осталась одна ошибка в строке
page.then((module:ComponentProps<any>)
ругается на <any> . А так код рабочий , и все работает . Но все равно смущает красная строка . Может ли кто нибудь поделиться своими соображениями и подправить мой код . Заранее спасибо . Вот весь мой код .
P.S Пробовал через Copilot , но с каждым разом количество ошибок увеличивалось и достигло почти 70. ))
И в результате он завис. ))
import '../css/app.css';
import { createInertiaApp } from '@inertiajs/react';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
import { createRoot } from 'react-dom/client';
import { initializeTheme } from './hooks/use-appearance';
import { ComponentProps,ReactNode} from 'react';
import Layout from './layouts/app/app';
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
createInertiaApp({
title: (title) => `${title} - ${appName}`,
// resolve: (name) => resolvePageComponent(`./pages/${name}.tsx`, import.meta.glob('./pages/**/*.tsx')),
resolve: (name) => {
const page = resolvePageComponent(`./pages/${name}.tsx`, import.meta.glob('./pages/**/*.tsx'));
page.then((module:ComponentProps<any>) => {
module.default.layout = module.default.layout || ((page:ReactNode) => <Layout children={page} />);
});
return page;
},
setup({ el, App, props }) {
const root = createRoot(el);
setTimeout(() => {
delete el.dataset.page;
});
root.render(<App {...props} />);
},
progress: {
color: '#4B5563',
},
});
// This will set light / dark mode on load...
initializeTheme();
После долгих мучений таки решил проблему,но на 50% . В результате на локальном компьютере, на котором установлена Kubuntu 24.04.1 , все работает нормально . А вот на рабочем сервере так и не получилось , не хватает библиотек . И что странно , что на локальном компьютере я дополнительно не устанавливал никаких библиотек . Получается , что на рабочем сервере какая то древняя версия ОС ? А сам я библиотеки установить не могу , так как нет прав sudo.
P.S Устанавливал в двух вариантах Windows 11 OSPanel 5.43 и второй вариант Linux-Kubuntu оказалось , что под Windows конвертирует в PDF в три раза медленнее , чем Linux. А мо'ет зависит от Chrome , так как на Linux облегченная версия Chromium.
Странно , неужели никто не использовал Spatie laravel-pdf ????
mpdf дает базовые возможности по стилевому оформлению. со сложными правилами он может не справиться.зато он самодостаточен, не надо ни nodejs, ни headless chrome
Ну так же как и dompdf .
Может кто скажет как справиться с этой проблемой , Спасибо ,
sh: 1: npm: not found sh: 1: .nvm/versions/node/v22.6.0/bin/node: Permission denied
В интернете много чего по этому поводу , но ничего не помогает. Я уже папке .nvm присвоил права 777 , но не взлетает .
Спасибо , что откликнулись. Это я примерно уже понял, но проблема в том , что на сервере я не имею прав доступа с правами root . Сейчас установил linux на локальный компьютер и буду пробовать разбираться.
P.S Но как я полазал по интернету, то проблемы не только у меня одного.
Ну и как отзывы по поводу mpdf/mpdf ? Как он дружит с tailwind css ???
Спасибо.
Добрый день . Кто нибудь использовал связку Laravel spatie laravel to pdf ? На локальном компьютере работает , но я использовал браузер Google Chrome. Но никак не могу настроить на вебсервере. Перелопатил уже весь инет , но толком так ничего и не нашел . Понял , что проблема не у меня одного.
Последняя ошибка это :
.cache/puppeteer/chrome/linux-127.0.6533.88/chrome-linux64/chrome: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory TROUBLESHOOTING: https://pptr.dev/troubleshooting at Interface.onClose
Но как установить эту библиотеку так и не нашел.
node- v22.5.1 , npm - 10.8.2 , puppeteer- 22.15.0
Заранее благодарен откликнувшимся .
Мне интересно, здесь отвечает кто нибудь?
Или вопрос настолько тупой , что нет ответа .
Переделал пока так , вроде как и работает , Прошу хоть покритиковать.
import {Select} from "flowbite-react";
import {router} from "@inertiajs/react";
export default function PageCount({location}) {
function handleChange(e) {
const key = e.target.id;
const value = e.target.value
const values={[key]: value};
router.get(`${location}`,values);
}
return (
<>
<div className="max-w-[10rem]">
<form>
<Select onChange={handleChange}
id="per_page">
<option>Select per page</option>
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
<option>100</option>
</Select>
</form>
</div>
</>
);
}
Добрый день , может кто нибудь поможет в одном вопросе . На сайте https://inertiajs.com/forms нашел такой пример
import { useState } from 'react'
import { router } from '@inertiajs/react'
export default function Edit() {
const [values, setValues] = useState({
first_name: "",
last_name: "",
email: "",
})
function handleChange(e) {
const key = e.target.id;
const value = e.target.value
setValues(values => ({
...values,
[key]: value,
}))
}
function handleSubmit(e) {
e.preventDefault()
router.post('/users', values)
}
return (
<form onSubmit={handleSubmit}>
<label htmlFor="first_name">First name:</label>
<input id="first_name" value={values.first_name} onChange={handleChange} />
<label htmlFor="last_name">Last name:</label>
<input id="last_name" value={values.last_name} onChange={handleChange} />
<label htmlFor="email">Email:</label>
<input id="email" value={values.email} onChange={handleChange} />
<button type="submit">Submit</button>
</form>
)
}
Он великолепно работает с input , но вот моего ума пока не хватает , чтобы переделать его для использования с select . Вот мой пример .
import {Select} from "flowbite-react";
import {router} from "@inertiajs/react";
import {useState} from "react";
export default function Layout() {
const [values, setValues] = useState({
page: "",
})
function handleChange(e) {
const key = e.target.id;
const value = e.target.value
setValues(values => ({
...values,
[key]: value,
}))
router.get('products', values)
}
return (
<>
<div className="max-w-[6rem]">
<form>
<Select onChange={handleChange}
defaultValue={"20"}
id="per_page">
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
</Select>
</form>
</div>
</>
);
}
Проблема в том , что на сервере константа page всегда Null , а id="per_page" передается с опозданием , т.е передает предыдущее значение . Если кто поможет с доработкой примера , заранее благодарен. Спасибо.
Добрый день. Решил продолжить тему laravel+vue . Вопрос скорее информационный. Может кто поделится своим опытом. Вопрос заключается при обновлении количества товара в компоненте в корзине после его добавления в таблицу. Т.е при нажатии кнопки Add, товар добавляется в таблицу , а кол.отображается в компоненте в Header, как обычно . Какие события лучше использовать,чтобы обеспечить асинхронность обновления корзины.Надеюсь Вопрос поставил правильно. Спасибо.
Спасибо всем за помощь . Проблема решилась поиском другого плагина.
https://github.com/outl1ne/nova-multiselect-field
Добрый день. Кто нибудь использовал https://github.com/Benjacho/belongs-to-many-field-nova ???
Что то у меня не получается настроить . Не отображает никаких данных . Или может кто нибудь посоветует более рабочее ? Заранее спасибо.
День добрый . Не стал открывать новую тему , а решил написать здесь. Решил использовать tailwind-component carousel , но столкнулся с проблемой , при интеграции в Laravel Inertia Vue 3 tailwind vite . Даже при копировании кода с официального сайта в Edge и Opera при загрузке страницы не отобращаются изображения , т.е carousel не запускается автоматически , в Chrome работает при начальной загрузке , а если переходить на страницу по Link , то та же самая история . При перезагрузке страницы , вновь работает. Может кто использовал , и поделится опытом ??? Все настройки делал соглассно документации сайта Tailwind Component.
Поиски проблемы в интернете не дали результата.
Заранее спасибо.
А это ? Не помогает ??? https://laravel.com/docs/9.x
Когда я использовал parent_id, запрос пытался найти menu_id и выдавал ошибку
Я находил готовые примеры в инете , где пишут неограниченный уровень вложенности. Делал так как описано в примерах , но была та же проблема , 3 уровня . Как то так.
Миграции , только создают таблицу в базе данных , и никакого отношения к запросам не имеют.
Нет , миграции не обязательно.
Как всегда множество ответов и пожеланий.
Вроде как я ступил,все работает . Но почему не работало , я так и не понял.
Всем спасибо за помощь.