Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как подключить PHP по средствам JS с интервалом (https://javascript.ru/forum/dom-window/79216-kak-podklyuchit-php-po-sredstvam-js-s-intervalom.html)

DenisUfa 07.01.2020 23:13

Как подключить PHP по средствам JS с интервалом
 
Ребят я только всему учусь поэтому не смейтесь) подскажите как подключить PHP по средствам JS с интервалом выполнения каждые 2 сек(счетчик посетителей).
Сейчас подключено к странице так:
<?php
include ('counter.php');
?>

А надо типа того:
<script>
function online() {
<--тут как правильно подключить php-->
}
setInterval(online,2000);
online();
</script>

Aetae 07.01.2020 23:36

http://phpfaq.ru/newbie/na_tanke

Malleys 08.01.2020 00:48

DenisUfa, например так...
(function online() {
    fetch("/counter.php").then(async response => {
        document.querySelector("#counter").textContent = await response.text();
    }).finally(() => {
        setTimeout(online, 2000);
    });
})();


Но лучше всего, чтобы данные обновлялись тогда, когда они реально поменяются. Это можно сделать при помощи EventSource (сервер присылает новое число пользователей) Ещё, конечно, можно при помощи WebSocket.

Цитата:

Сообщение от Rise
Это делается через AJAX.

Ну почему вы не сделали через него? Вы использовали XMLHttpRequest, что в принципе тоже имеет место быть и работает даже в самых старинных браузерах, но никакого AJAX в данном примере не существует, и в данной теме не нужен! Кстати твой пример покажет кол-во пользователей через 61 секунду после открытия страницы.

DenisUfa 08.01.2020 01:04

Если через JS то у меня выводит на странице строчку целиком вот так:
echo "<span style=font-size:18px;color:#A9A9A9;padding-left:15px;>сейчас на сайте: $online</span>";
Но если подключить просто то все нормально стили выполняются.
<?php
include ('counter.php');
?>

Malleys 08.01.2020 01:06

DenisUfa, я думал у вас только число присылается... (Что было бы лучше, с чистыми данными легко работать) Ну тогда вместо textContent тогда используйте innerHTML, или исправьте серверный скрипт!

DenisUfa 08.01.2020 01:09

заменил на innerHTML теперь все как хотел заработало! Спасибо большое!

DenisUfa 08.01.2020 20:19

Сегодня захожу на сайт и вижу счетчики свихнулись. Решил посмотреть в чем дело и увидел что дисковое пространство переполнено логами))). Этого файла у меня не существует: save2log.php Но вроде был в одном счетчике который я пробовал, но я его удалил. Не подскажите что это?

.access.log

31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.2.252 Yowser/2.5 Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.3.320 Yowser/2.5 Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Linux; Android 9; SM-G965F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.2.252 Yowser/2.5 Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.2.252 Yowser/2.5 Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.3.320 Yowser/2.5 Safari/537.36"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.72 (Edition Campaign 34)"
31.41.41.1 - - [08/Jan/2020:20:03:02 +0300] "GET /php/online.php HTTP/1.0" 200 363 "http://домен" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.2.252 Yowser/2.5 Safari/537.36"

.error.log

[Wed Jan 08 20:14:56.062731 2020] error [pid 26756] [client 95.30.61.216:54548] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:14:57.315884 2020] error [pid 26791] [client 95.30.61.216:54626] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:00.576285 2020] error [pid 26878] [client 95.179.127.56:54806] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:00.766036 2020] error [pid 26893] [client 95.30.61.216:54812] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:02.459028 2020] error [pid 27082] [client 95.30.61.216:54928] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:03.289195 2020] error [pid 27116] [client 95.30.61.216:54998] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:07.209424 2020] error [pid 27287] [client 178.216.38.255:55286] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:07.723609 2020] error [pid 27300] [client 95.30.61.216:55304] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:10.881870 2020] error [pid 27443] [client 178.163.92.192:55472] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:19.695092 2020] error [pid 27713] [client 95.30.61.216:55916] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:20.993406 2020] error [pid 27750] [client 93.124.57.160:55992] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:24.050131 2020] error [pid 27863] [client 82.193.155.253:56168] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:25.746035 2020] error [pid 27902] [client 95.79.7.134:56282] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:29.337384 2020] error [pid 28119] [client 95.30.61.216:56488] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:34.853143 2020] error [pid 28402] [client 178.163.92.192:56822] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:35.921333 2020] error [pid 28437] [client 95.79.7.134:56896] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:39.155199 2020] error [pid 28560] [client 95.30.61.216:57080] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice
[Wed Jan 08 20:15:48.177265 2020] error [pid 28845] [client 95.79.7.134:57550] script '/var/www/user101771/data/www/домен/save2log.php' not found or unable to stat, referer: http://домен/voice

Malleys 08.01.2020 21:48

Цитата:

Сообщение от DenisUfa
и вижу счетчики свихнулись

В чём это выражается, как вы это поняли?

Цитата:

Сообщение от DenisUfa
Не подскажите что это?

Это — последствия реализации вашей идеи: «подскажите как подключить вывод PHP скрипта средствами JS с интервалом выполнения каждые 2 секунды (счетчик посетителей)». А вы что ожидали?

Цитата:

Сообщение от Rise
А как надо чтобы существовало [AJAX]?

Никак. AJAX, означает «асинхронный JavaScript и XML» — используется не по назначению, ведь ни о каком «асинхронный JavaScript и XML» нет и речи. Когда используется XMLHttpRequest, fetch, WebSocket и пр., то это называется «общение клиент-сервер». Раз вам так нужно выражение по-английский, которое вы хотите штамповать при любом упоминании клиент-сервер, то это будет — Client-Server Communication.

Всего-то 4 слова — «клиент», «запрос», «сервер» и «ответ». Не нужно усложнять!

DenisUfa 09.01.2020 00:02

Цитата:

Сообщение от Malleys (Сообщение 518524)
В чём это выражается, как вы это поняли?

Число то 50, то 0 показывало резко менялось. Снес на всех страницах, а сервер продолжает выполнять дальше и строчит логи.

[Wed Jan 08 23:58:04.672876 2020] error [pid 29442] [client 91.214.196.209:15552] script '/var/www/user101771/data/www/.ru/save2log.php' not found or unable to stat, referer: http://.ru/voice
[Wed Jan 08 23:58:10.936889 2020] error [pid 29507] [client 212.58.114.253:15686] script '/var/www/user101771/data/www/.ru/save2log.php' not found or unable to stat, referer: http://.ru/voice
[Wed Jan 08 23:58:21.714776 2020] error [pid 29617] [client 31.173.166.26:15850] script '/var/www/user101771/data/www/.ru/save2log.php' not found or unable to stat, referer: http://.ru/voice

DenisUfa 09.01.2020 00:18

У меня работают вот такие скрипты и никаких проблем. В режиме реального времени. Мне нужно было что-то такое только с посетителями и без использования БД.
function getRate(){
$.getJSON( "https://www.cbr-xml-daily.ru/daily_json.js", function( data ) {
document.getElementById("usdrub").innerHTML = ( (data.Valute.USD.Value).toFixed(2) ) ;
document.getElementById("eurrub").innerHTML = ( (data.Valute.EUR.Value).toFixed(2) ) ;
});
}
setInterval(getRate,1000);
getRate();


Часовой пояс GMT +3, время: 22:03.