Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262

Цитата:
так подойдёт ?

я же спросил - для чего? зачем это все городить?

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 22:18 14-10-2024
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://www.upload.ee/files/17257749/Core.zip.html
JavaFX swing awt
Win 10/11
Oracle, Liberica JDK 22+
 
 
для этого это хочу сделать чтобы делать запосы на вебсервер. будет POST и обратный ответ хочу сделать через WebSocket
 
а вообще наверное лучше через нормальные socket'ы
но только как лучше клиент Java сервер PHP ?
 
Добавлено:
https://stackoverflow.com/questions/13208814/php-sockets-accept-multiple-connections
 
?
 
Добавлено:
https://medium.com/@gaurangjotwani/building-a-multi-client-calculator-server-using-java-multithreading-6bbb5d350864
 
only Java socket Server & Client
Test ok
 
Добавлено:
https://www.digitalocean.com/community/tutorials/java-socket-programming-server-client
 
working Java Server  <-> Java Client Example
Test ok

Всего записей: 2240 | Зарегистр. 25-02-2013 | Отправлено: 23:42 14-10-2024 | Исправлено: vs6262, 01:24 15-10-2024
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Только вот ещё вопрос мне Java Server лучше на VPS запускать через cronjob или из servlet?

Всего записей: 2240 | Зарегистр. 25-02-2013 | Отправлено: 08:19 15-10-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262

Цитата:
Только вот ещё вопрос мне Java Server лучше

при чем тут тема о php???
 

Цитата:
через cronjob или из servlet

почитайте в чем разница. cronjob для регулярного запуска по расписанию.
 
запускать то нужно при запуске системы и перезапуск если упадет.

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 08:31 15-10-2024
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
простите что залез уже в тему по PHP
 
Добавлено:
https://www.geeksforgeeks.org/introducing-threads-socket-programming-java/
 
on VPS
1. Install JDK
2. Start Cronjob
3. Предача дальше в PHP POST
 
и не нужен Tomcat

Всего записей: 2240 | Зарегистр. 25-02-2013 | Отправлено: 08:38 15-10-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PHP: Полезные (интересные и оригинальные) решения
 

Цитата:
Но бывают случаи, когда скрипт останавливается с диагностикой ошибки, которой на самом деле нет. То есть, что-то не успевает синхронизироваться.
Как бы это исправить?

откуда же мы знаем, не видя кода?
 

Цитата:
(Сессии не стал использовать, поскольку вариант с базой позволяет прерваться и потом продолжить с этого же места).  

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

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 01:05 07-11-2024
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
и чем это плохо? можно ограничить время жизни сессии, чтобы нельзя было бесконечно ждать.
что мешает оставить открытой ту форму со случайным числом?
Тест длинный. Иногда человек на часть вопросов отвечает сегодня, а на остальные на следующий день, продолжая с этого же места. Хранение в базе позволяет это сделать.
 
Но в данный момент это не главное - где хранить, в сессии или в базе.
 
 

Цитата:
откуда же мы знаем, не видя кода?

 
 
На странице с тестом  
        // Динамический адрес для формы
        // Случайная часть динамического адреса
    $randomNumber = random_int(105000, 995000);
 
    // Создание подготовленного SQL запроса для обновления столбца
    $sql = "UPDATE user SET address_dynamic = ? WHERE token = ?";
 
    // Подготовка и выполнение SQL запроса
    $stmt = mysqli_prepare($db, $sql);
    mysqli_stmt_bind_param($stmt, "is", $randomNumber, $token);
    if (mysqli_stmt_execute($stmt)) {
            //echo "Data updated successfully";
    }
 
Форма тестирования
      <form action="green-handler.php?d=<?php echo $randomNumber; ?>" method="POST">
         
<div class="radiobutton-group">
    <input type="radio" id="button1" name="ball" value="100">
    <label for="button1">0</label>
 
    <input type="radio" id="button2" name="ball" value="1">
    <label for="button2">1</label>
 
    <input type="radio" id="button3" name="ball" value="2">
    <label for="button3">2</label>
 
    <input type="radio" id="button4" name="ball" value="3">
    <label for="button4">3</label>
 
    <input type="radio" id="button5" name="ball" value="4">
    <label for="button5">4</label>
 
    <input type="radio" id="button6" name="ball" value="5">
    <label for="button6">5</label>
 
    <input type="radio" id="button7" name="ball" value="6">
    <label for="button7">6</label>
 
    <input type="radio" id="button8" name="ball" value="7">
    <label for="button8">7</label>
 
    <input type="radio" id="button9" name="ball" value="8">
    <label for="button9">8</label>
 
    <input type="radio" id="button10" name="ball" value="9">
    <label for="button10">9</label>
 
    <input type="radio" id="button11" name="ball" value="10">
    <label for="button11">10</label>
</div>        
 
  <button class="start" type="submit">Далее</button>
</form>
 
 
 
В обработчике green-handler.php
 
 
Вот так, вместе с другими элементами, мы извлекаем из базы динамическую часть адреса (переменная $address_dynamic)
 
    $sql = "SELECT step, new_topics, old_topics, limit_seans, address_dynamic FROM user WHERE token = ?";
 
    // Подготовка и выполнение SQL запроса
    $stmt = mysqli_prepare($db, $sql);
    mysqli_stmt_bind_param($stmt, "s", $token);
    if (mysqli_stmt_execute($stmt)) {
        // Привязка результатов запроса к переменным
        mysqli_stmt_bind_result($stmt, $step, $new_topics, $old_topics, $limit_seans, $address_dynamic);
 
        // Получение и вывод значений столбцов
       mysqli_stmt_fetch($stmt);
    }
 
 
А здесь производим проверку
 
    // Проверка динамической части адреса для отсечения внешнего вызова
    if(isset($_GET['d'])) {
        if(!ctype_digit($_GET['d'])) die('<p class="error">Запрещённая операция. 55 <a href="/">На главную</a></p>');     // В адресе должный быть только цифры
        if($address_dynamic != $_GET['d']) die('<p class="error">Запрещённая операция. 56 <a href="/">На главную</a></p>');     // Не совпадают адреса
    }
    else die('<p class="error">Запрещённая операция. 58 <a href="/">На главную</a></p>');
 
И почему-то получается, что примерно 1 раз на 200-300 ответов выводится сообщение об ошибке 58.
 
Чтобы выйти на проблему, я организовал запись в текстовый файл пары адресов из базы и полученные через GET.
 
Вот последние результаты:
 
address_dynamic 626890 | $-_GET['d'] 626890
address_dynamic 748117 | $-_GET['d'] 748117
address_dynamic 467814 | $-_GET['d'] 626890
 
В последней строке запись, после которой диагностирована ошибка. Адрес в базе именно такой (467814), а по GET пришел другой (626890). Видно, что такое число (626890) было на два цикла раньше. Похоже, что браузер, почему то, извлек старый адрес из кеша и решил его передать вместо требуемого?
 
(На всех страницах стоит
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");)
 

Всего записей: 351 | Зарегистр. 07-09-2016 | Отправлено: 11:25 07-11-2024 | Исправлено: Vladsvn, 18:16 07-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Похоже, что браузер, почему то, извлек старый адрес из кеша и решил его передать вместо требуемого?

браузер (аддоны в нем) может делать предварительный запрос страницы, там даже может не полный запрос, а HEAD только.
нужно посмотреть $_SERVER['REQUEST_METHOD']
 

Цитата:
    // Создание подготовленного SQL запроса для обновления столбца
    $sql = "UPDATE user SET address_dynamic = ? WHERE token = ?";

меняйте не при GET запросе на страницу генерации формы, а при POST запросе содержимого формы.
правда тогда можно поделиться с кем то ссылкой, увидят те же вопросы. это по поводу списывания.

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 22:45 07-11-2024 | Исправлено: Mavrikii, 23:13 07-11-2024
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
1. Если добавить в заголовки header("Expires: 0"); лучше не будет?
 
2. Если в качестве динамического адреса использовать не шестиразрядное десятичное число (типа address_dynamic 626890), а  цифро-буквенное слово на 64 знака, это не заставит браузер отказаться от кеширования при указанных заголовках?
 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");)
header("Expires: 0");
 
3. Не отпадет ли проблема кеширования, если использовать AJAX ?

Всего записей: 351 | Зарегистр. 07-09-2016 | Отправлено: 23:38 07-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Если добавить в заголовки header("Expires: 0"); лучше не будет?

нет.
 
там нет кэширования, не в этом проблема.
 

Цитата:
Не отпадет ли проблема кеширования, если использовать AJAX ?

лучше, сам браузер не будет делать запрос предварительно.

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 23:40 07-11-2024
khlaus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если добавить header("Expires: 0"), то, возможно, это не решит проблему, так как она скорее не в кэшировании, а в поведении браузера. Для предотвращения кеширования стоит обратить внимание на другие методы, такие как использование AJAX, который предотвратит предварительные запросы браузера.

Всего записей: 5 | Зарегистр. 11-11-2024 | Отправлено: 01:11 12-11-2024
Sto50



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. У меня такой вопрос.У меня в базе данных есть дата в формате timestamp. Мне надо проверить или прошли сутки от даты которая записана у меня в базе .
Заранее спасибо

Всего записей: 91 | Зарегистр. 26-06-2005 | Отправлено: 21:26 14-12-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sto50
что значит "проверить"? в базе может быть много записей - конкретнее.

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 21:29 14-12-2024 | Исправлено: Mavrikii, 21:30 14-12-2024
Sto50



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Я достаю из базы определенную запись по id пользователя. У этого пользователя есть поле с датой отправки линка для подтверждения. Если пользователь перешол по этому линку, но после отправки линка прошло 24 часа, то линк работать не будет  

Всего записей: 91 | Зарегистр. 26-06-2005 | Отправлено: 21:35 14-12-2024 | Исправлено: Sto50, 21:36 14-12-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sto50
ну
1) вы можете проверить дату после выборки
2) вы можете сначала удалять устаревшие записи, а потом делать свою выборку
3) вы можете в запрос добавить условие на дату.
.. WHERE ... AND date_column > DATE_SUB(NOW(), INTERVAL 1 DAY)
или INTERVAL 24 HOUR , так как 1 DAY может от 00:00:00 считать
https://stackoverflow.com/questions/61505068/is-interval-1-day-always-equal-to-interval-24-hours

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 21:42 14-12-2024 | Исправлено: Mavrikii, 22:00 14-12-2024
Sto50



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Как всегда огромное спасибо тебе. Буду пробовать третий вариант
 
Добавлено:
Mavrikii
Еще раз спасибо тебе. Проблема решена

Всего записей: 91 | Зарегистр. 26-06-2005 | Отправлено: 21:44 14-12-2024
Sto50



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем. Помогите пожалуйста. Почему этот запрос срабатывает некорректно. Причем если я уберу AND `agent` = 211 все отработает отлично  
Вот сам запрос...
 
SELECT  
    agent,
    COUNT(*) AS total_events,
    SUM(CASE WHEN event = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS total_calls,
    SUM(CASE WHEN event = 'CONNECT' THEN 1 ELSE 0 END) AS answered_calls,
    SUM(CASE WHEN event = 'ABANDON' THEN 1 ELSE 0 END) AS no_answered_calls
FROM queue_log
WHERE time >= CURDATE()
AND `agent` = 211

Всего записей: 91 | Зарегистр. 26-06-2005 | Отправлено: 12:36 02-04-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sto50
Вы название темы совсем не замечаете?
MySQL Помогите составить запрос
 

Цитата:
Причем если я уберу AND `agent` = 211 все отработает отлично  

Откуда же я знаю какие у вас данные в базе? Очевидно, что agent = 211 не совпадает с нужной вам выбором. Не видя данных не сказать.
 

Цитата:
WHERE time >= CURDATE()

Будущее смотрите?

Всего записей: 16409 | Зарегистр. 20-09-2014 | Отправлено: 18:36 02-04-2025
Sto50



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо большое
Вот так все заработало
"SELECT
    MAX(CASE WHEN agent <> 'NONE' THEN agent END) AS agent,
    SUM(CASE WHEN event = 'ENTERQUEUE' THEN 1 ELSE 0 END) AS total_calls,
    SUM(CASE WHEN event = 'CONNECT' THEN 1 ELSE 0 END) AS answered_calls,
    SUM(CASE WHEN event = 'ABANDON' AND (agent = 211 OR agent = 'NONE') THEN 1 ELSE 0 END) AS no_answered_calls
    FROM queue_log
    WHERE time >= CURDATE()
    AND (agent = 211 OR agent = 'NONE')"

Всего записей: 91 | Зарегистр. 26-06-2005 | Отправлено: 19:01 02-04-2025 | Исправлено: Sto50, 19:02 02-04-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru