PHPize.online: ещё одна онлайн площадка для работы с PHP с шахматами и библиотекаршами. (SQL и ChatGPT)

История началась чуть больше двух лет назад. В силу обстоятельств я на две недели остался заперт дома и проводил большую часть времени в компании ноутбука. Чтобы отвлечься рефрешил странички StackOverflow и Тостера в поиске интересных вопросов где бы пригодились мои знания. Как знают завсегдатаи этих сайтов у вопрошающих требуют "покажи свой код" да и при ответе считается хорошим тоном публикация работающего ответа. В случае PHP или SQL все просто вот https://dbfiddle.uk вот https://onlinephp.io все просто и понятно - написал код лил запрос опубликовал ссылку и готово.

Оказалась что есть большая категория на стыке PHP и MySQL. Как быть хотелось бы и в этом случае опубликовать ссылку на то и другое и желательно на одном сайте. Вечер был убит на поиски достойного кандидата - безрезультатно.

Следующий день - все по написанному:
- Отрицание - не может быть что никто такого еще не сделал
- Гнев, Торг, Депрессия - пропущу
- Принятие - похоже придется делать самому

Планирование:
- фронт: тяп ляп HTML/CSS пару строк Javascript, даже JQuery не понадобился :)

Дизайн
Дизайн

- бэк тут задумался. Нужна поддержка разных версий пыхи, да и одним мускулом не обойтись. Вывод - берем докер. Неважно что опыта нет, зато модно-молодёжно, с остальным разберемся по ходу дела.
- MVP разбрасываю функционал по контейнерам:
-- докер с пыхой (две штуки) для начала PHP5 и 7
-- докеры с мускулем (два) MySQL5.7 & 8
-- фронт nginx со статикой

Связь между докерами docker-compose даёт из коробки, MySQL взял без изменений прямо с DockerHub'а в PHP пришлось добавить модули mysqli и PDO по инструкции. Ну и создать папку для хранения загруженного кода.

FROM php:5-fpm
RUN docker-php-ext-install pdo pdo_mysql mysqli
RUN docker-php-ext-enable mysqli 

RUN mkdir -p /tmp/usersessions
RUN chown user:user -R /tmp/usersessions

В nginx пробросим конфиг, чтобы дергать нужный докер в зависимости от выбранной версии PHP

    location ^~ /php5 {
        location ~ \.php {
                ...
                fastcgi_pass php5:9000;
                ...
        }
    }
    
    location ^~ /php7 {
        location ~ \.php {
                ...
                fastcgi_pass php7:9000;
                ...
        }
    }

Ну вот в принципе и всё. Так за пару дней я запустил PHPize.online который и продолжаю развивать уже больше 2-х лет.

Если статья Вам понравилась, и планирую в следующих статьях описать возникшие трудности и то как я их преодолевал.
Отдельное спасибо @FanatPHPза моральную поддержку проекта!

@rozhnev
25.08.2023 11:22 UTC
Первоисточник

Комментарии

@FanatPHP
25.08.2023 06:37 UTC
+3

Спасибо за отличный сервис, идея соединить PHP и MySQL песочницы просто прекрасная.
Очень жаль, что периодически он подвергается набегам неумных бандерлогов, которые ищут, чего бы поломать.
Например, я очень обрадовался, когда увидел что в SQL вкладке уже есть готовая тестовая БД — Sakila Sample Database… и расстроился, когда увидел, что ее кто-то постоянно удаляет. А потом снова обрадовался, когда она появилась в режиме read-only. Очень удобно использовать готовую БД вместо того чтобы каждый раз добавлять тестовую таблицу с данными.

@rozhnev
25.08.2023 08:18 UTC
+4

Спасибо за отзыв! Я рад что мой проект кому-то полезен. Все жалобы и предложения пишите в телеграм-чат проекта

@Akina
25.08.2023 10:45 UTC
+2

Отличная идея и прекрасное исполнение. Плюс стабильная работа, чем, в общем, большинство существующих сервисов похвастаться не может.

Я бы, как не имеющий дело с PHP и общающийся только с SQL-частью проекта, хотел бы добавления чисто SQL-части (ну просто при этом места на экране будет больше). А ещё - с дополнительным сервисом исполнения одного и того же кода в двух разных версиях СУБД, чтобы одновременно можно было посмотреть выводы для этих версий...раньше такой сервис был на dbfiddle.uk, но его выпилили - приходится использовать два окна, и не забывать синхронизировать правки. Но понимаю, что это достаточно серьёзная доработка, и на голом энтузиазме её трудно тащить.

@FanatPHP
25.08.2023 10:54 UTC
+2

Так есть же — https://sqlize.online/ :)

25.08.2023 11:56 UTC
0

Точно... и ведь пользовался же когда-то, ссылка в избранном имеется. Забыл, походу.

@rozhnev
25.08.2023 12:23 UTC
0

Интересная идея. В принципе технически не сложно реализовать, меня больше затрудняет как это представить визуально

27.08.2023 18:08 UTC
0

Визуально у вышеупомянутого сервиса было так: два комбобокса для выбора двух версий СУБД (причём это могли быть разные СУБД), один блок кода, после выполнения - два блока вывода. Соответственно легко сравнить выводы.

27.08.2023 20:51 UTC
0

Я понял. Добавлю в свой todo лист

27.08.2023 20:48 UTC
0

git diff, например

28.08.2023 04:45 UTC
0

Не, просто увидеть, чем различается вывод - мало. Надо именно рядом видеть два вывода для сравнения, и видеть не только, где различия, но и те части, где различий нет. Представь, что одна СУБД выполнила некий серединный запрос, а другая сгенерила ошибку - параллельный просмотр "глазами" позволит продолжить сравнение вывода последующих запросов.

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

24.09.2023 19:43 UTC
0

Пока добавил опцию "Preserve result" сохраняющую предыдущий результатт на экране. Возможно это частично решит вашу проблему

25.09.2023 05:31 UTC
0

Спасибо!

Хотя я бы не сказал, что проблема - давно уже примастырился сохранять вывод куда-нить (обычно эксель) для сравнения.