Ответы пользователя по тегу PHP
  • Ошибка HTTP Response code: 500?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вот, ловите ссылку на вашу ошибку: 5xx: Server Error. Ну а вообще, есть такая штука, "дебаг" называется. Вы его сделали? Что именно и как вы сделали? Что именно у вас не получилось? Не смогли написать через строчку лог процесса работы вашего кода? Или не смогли найти этот лог? Не смогли найти в документации как проверить на ошибку результат выполнения функции? Или что именно?
    Ответ написан
    Комментировать
  • Можно ли запустить WebSocket по переходу на страницу?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, вполне можно, создавайте. Только вот для перехода по ссылке вида wss://*** потребуется именно WS клиент, а если переход по ссылке в браузере - то этот протокол должен быть зарегистрирован в системе для опеределнного WS приложения, которое и обработает эту ссылку. Если вы имеете ввиду под переходом по ссылке клик по ссылке в браузере и переход на веб страницу, для которой запустится веб-сокет сервер - то да, так тоже можно. При выполнении скрипта на сервере надо будет просто инициировать запуск веб-сокет сервера, а на странице подключаться к нему.
    Ответ написан
  • Сколько можно держать одновременных соединений на php ratchet?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вот тут есть детальное исследование, там как раз 10к соединений тестируется: https://www.researchgate.net/publication/348993267...
    Ответ написан
    Комментировать
  • Как передать данные в exe файл на C# при загрузке?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Проще всего просто дописать строку в конец самого exe файла, а в последнем байте - её длину. И при запуске приложения прочитать последний байт exe и далее вычислив начало и конец строки прочитать конец файла как строку. Чуть более сложный вариант в случае если надо пересобирать дистрибутив или добавить в него параметры какие-то: NSIS отлично работает под линуксом - так что можно ему передавать любые свои аргументы и делать сборку дистрибутива на лету.
    Ответ написан
  • Как залить на сервер сайт с бекендом, который написан на php?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Изучить основы PHP - а именно что это вообще такое, как оно работает и как запускается (а еще и какие вообще бывают ЯП и чем отличаются).
    2. Изучить основы сетевого взаимодействия ПО и что вообще такое веб-сервер.
    3. Изучить основы работы с Linux.
    4. Арендовать сервер.
    5. Настроить сервер в соответствии с требованиями PHP, а так же вашего сайта.
    6. Создать git репозиторий и залить туда ваш код.
    7. Настроить деплой из гита на сервер.
    8. Настроить веб-сервер и SSL на сервере.
    9. Задеплоить сайт на сервер и пользоваться сайтом.
    Ответ написан
    Комментировать
  • Успешно! вместо текста?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Кодировка же - у вас исходная utf-8, а выводится как 1251. Смотрите как у вас там и что выводится и какие заголовки.

    UPD: пофиксил очепятку, спасибо @rPman
    Ответ написан
    6 комментариев
  • Как залить php сайт без базы данных на хостинг?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Традиционно и правильно - клонированием репозитория системой автоматического развертывания.
    Ответ написан
    2 комментария
  • Как сделать Рукопожатие и общение от Websocket сервера к websocket серверу workerman?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Вообще, в веб-сокетах соединения сервер-сервер не существует в принципе, т.к. сервер - это именно сервис, который ждет подключения к нему клиентов, а не сам подключается. Для подключения к другому WS серверу со стороны своего сервера необходимо использовать WS клиента - т.е., подключаем код клиента и подключаемся как клиент к стороннему серверу, получаем данные с него, конвертируем во что надо и прокидываем через свой сервер куда дальше надо.
    Ответ написан
    Комментировать
  • Какие есть способы предотвращения регистрации с сомнительными email адресами?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Есть сервисы проверки почты, например: https://www.stopforumspam.com/ - сам использую уже давно, отличный сервис. Плюс имеет смысл настроить какие-то дополнительные фильтры - например, проверять отпечаток клиента.
    Ответ написан
  • Можно ли хранить права пользователей в БД?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Нужно. В целом есть несколько вариантов реализации системы прав со своими плюсами, минусами и ньюансами - статей на эту тему в сети много, почитайте и подберите наиболее подходящий вам вариант.
    Ответ написан
    3 комментария
  • В чем разница между способами тестирования (в контексте web и php)?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Опишу простыми словами для упрощения понимания.

    модульное тестирование

    Тестирование конкретного модуля. Обычно - это самый нижний уровень, отдельные простые классы, т.е. ниже по логике уже будут отдельные функции. Например, в JS есть класс Math - тестирование всех его методов и есть модульный тест. Конечно, границы между логическими уровнями могут быть размыты и в данную категорию вполне можно вписать класс уровнем выше. Так же, модулем может быть и что-то более сложное - опять же, много зависит от масштабов и особенностей архитектуры.

    интеграционное тестирование

    Интеграция - это объединение. По сути выше на один уровень над модульным тестированием. Например, класс, который внутри использует простые классы. Например, есть классы графических двухмерных фигур - например треугольник и квадрат, над ними будет класс логических операций с фигурами на какой-то плоскости - сложение, вычитание и прочее. В данном случае тестируется взаимодействие сразу нескольких классов и модулей. Если строго - то сюда можно вписать тестирование большей части внутренней логики приложения.

    функциональное тестирование

    Очевидно, что тестируются конкретные функции, которые есть в техническом задании. Например: когда пользователь нажимает кнопку "купить" в карточке товара - товар добавляется в корзину.
    какими инструментами оно делается?

    Инструментами автоматизации GUI - для сайтов это Selenium и браузеры. Для десктопных/мобильных приложений аналогичные решения.

    приемочное тестирование

    в че отличие от интеграционных.. еще видел фразу что тут и фронт и бек тестируются, но яснее не стало, какими инструментами оно делается?

    "Бизнес" заказал в "Конторе" разработку сайта, выдал ТЗ, контора сделала сайт, бизнес заплатить денег обещал. Как бизнес проверит что контора сделала именно то, что он хотел? Через приемочное тестировние - бизнес получает доступ к сайту и проверяет, что сайт именно такой, какой он заказывал в ТЗ, а не тот, который сделали индусы за доширак. Если в ТЗ указан конкретный список тестов/фич - используется этот список или так, как прописано в ТЗ само тестирование. Само тестирование проводит соответствующий специалист (инженер отдела качества) - тыкает все кнопочки, нажимает менюшечки и говорит начальству "все окей, подписывай и платим им деньги" или "вот тут и тут не окей, не подписывай, денег не давай". Реальный пример: была заказана и собрана станция спутниковой связи, на приемке были представители заказчика и исполнителя, была толстая пачка бумаги на несколько сотен страниц, по которой первые проверяли что все работает именно так, как там написано в течении нескольких недель (плюс-минус), а вторые исправляли косяки показывали что все окей, потом все поставили свои галочки и крестики и разъехались по домам.

    E2E - тут тестируется чрез браузер, с помощью Mocha и тп, те тестируются "требования бизнеса к приложению", тестируются пользовательские сценарии.. а в чем отличие от функциональных тестов тогда?

    Сквозное тестирование. Это полная проверка от начала и до конца. Отличие от функционального в том, что это более комплексный тест. Если функциональное тестирование - это проверка конкретной функции, тот сквозное - работа всего приложения, т.е. более комплексное. Например, E2E тест приложения для загрузки файла на сервер: тест включает в себя запуск приложения, авторизация пользователя, выбор файла, указание мета информации, загрузку файла на сервер, выход из приложения. Вот тут неплохая статья на хабре: https://habr.com/ru/company/otus/blog/681066/

    Совсем запутался, с unit только понятно, а как уложить и разделить остальные?

    60da68c37e576762375008e5_thumb-image.png
    Картинка отсюда: https://www.rainforestqa.com/blog/the-layers-of-te...
    Ответ написан
    Комментировать
  • Как создать интернет магазин с админкой?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Написать ТЗ
    2. Сделать декомпозицию: разбить крупные задачи на более мелкие и повторить несколько раз, пока не станет известен каждый пункт
    3. По результатам декомпозиции написать частное ТЗ со всеми деталями
    4. Далее реализовывать ЧТЗ по пунктам, пока не закончатся
    Ответ написан
    Комментировать
  • Как сделать ребут и мониторинг серверов с помощью PHP команд?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Просто используйте Zabbix для мониторинга - там из коробки можно мониторить все популярные сервисы и приложения.
    Ответ написан
    Комментировать
  • В каких случаях fread/fwrite для стрима (сокета) разумнее сделать чанками? А когда наоборот - обязательно завершить чтение/запись?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вы явно недостаточно изучили механизмы работы сокетов и методы работы с ними. Есть два основных механизма: блокирующая передача/прием и не блокирующая передача/прием (в разных ОС есть свои ньюансы, которые можно прочитать в документации). Т.е., в первом случае поток приложения, которое принимает/передает данные, ожидает окончания передачи или приема данных, а во втором же случае приложение просто передает буфер системе и далее занимается уже своей работой. А вот уже как и с какой скоростью данные будут переданы или приняты - это уже работа операционной системы, а по окончании передачи/приема - либо ОС уведомляет приложение о том, что столько-то данных лежит в буфере - надо забрать, в случае приема либо приложение само проверяет периодически сколько там байт уже в буфере лежит. Аналогично с передачей данных - приходит уведомление о том, что данные переданы (колббэк или еще как - не принципиально в данный момент). В общем случае надо организовать очередь и пул "воркеров" - потоков, которые будут заниматься передачей данных между приложением и системой. Т.е., прочитали блок данных с диска - отправили в очередь, а первый освободившийся воркер эти данные передаст. Аналогично с приемом - воркеры принимают данные и складывают в очередь, а приложение забирает их из очереди. Само собой, в очередь надо класть не безымянный блок данных, а вместе с информацией о том, откуда и куда эти данные, а так же номер блока и общее их число. Число воркеров обычно соответствует числу ядер процессора или на один меньше и работают они все тоже асинхронно с сокетами. Воркер может быть и один, если не стоит цель максимально утилизровать процессор и сеть.
    Ответ написан
  • Существуют ли среды разработки десктопных преложений на основе веб-технологий?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    NWJS - лучшее решение, ИМХО.
    Ответ написан
    Комментировать
  • Как сделать десктопное приложение на JS с вызовом кода на php?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Ну раз там форма с парой полей и кнопок, почему бы не сделать нормальное десктопное приложение-то? Например WPF/WinForms. А так, можно использовать NWJS.
    Ответ написан
    Комментировать
  • Что эффективнее - один большой php файл или много маленьких в шаблонах?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Эффективнее провести нагрузочное тестирование с логированием времени обработки запросов и ключевых этапов обработки каждого запроса. Затем по итогам анализа логов выявить наиболее проблемные места и исправить недочеты, ошибки и прочее.
    А еще надо сразу грамотно делать декомпозицию проекта и грамотно проектировать архитектуру системы. Кроме того, есть еще такие штуки как БД и веб-сервер/прокси/балансер и т.п., которые вносят свои задержки в обработку запроса. Еще есть очень замечательная штука, которая называется "кэширование", с которой нет необходимости каждый раз загружать данные с диска. А так же еще куча других способов ускорения PHP.
    Ответ написан
    3 комментария
  • Как реализовать систему расчёта $y?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    $y = $x * 2000 + 6000;
    Ответ написан
    Комментировать
  • Похожи ли Яп-ы PHP и C / C++?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Все ЯП похожи в том или ином смысле. Спокойно учите то, что вам интересно и приносит новые знания. В ВУЗе скорее всего большую часть времени вы будете тратить впустую и реальных знаний о решении реальных задач вам там вряд ли дадут. А те знания, что дадут — устареют раньше, чем вы закончите учебу и будут неактуальны. Если программирование и разработка ПО вам интересны — фрилансите спокойно, решайте реальные задачи прежде всего, набирайте опыт и проекты в резюме, а ВУЗе просто отмечайтесь для галочки. Знания разных ЯП только помогают.
    Ответ написан
    2 комментария
  • Верстка календаря, переключение месяцев?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    1. Подключаем moment.js
    2. Получаем число дней и недель в текущем году
    3. Генерируем 12 массивов по пять недель с числами по дням
    4. Записываем массив чисел текущего года в ячейки таблицы
    5. Месяцы переключаем заменой чисел в таблице по номеру месяца в массиве
    Ответ написан