Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как заставить работать скрипт по серверному времени ? (https://javascript.ru/forum/misc/77081-kak-zastavit-rabotat-skript-po-servernomu-vremeni.html)

ddro3doff 26.03.2019 14:47

Цитата:

Сообщение от Malleys (Сообщение 505535)
Это отдельный скрипт, или он на той же странице?

На той же странице. За 5 минут до конца игры показывает сообщение о том что "вам осталось 5 минут". И за минуту до конца "Игра закончится в 19 50 Спасибо что принял участие"

Malleys 26.03.2019 14:51

У вас там написано по вторникам в 11:27 (пост №39)

ddro3doff 26.03.2019 14:54

Цитата:

Сообщение от Malleys (Сообщение 505537)
У вас там написано по вторникам в 11:27 (пост №39)

Это я тренировался и забыл переписать, вообще
Первое сообщение 19 45 пятница
Второе сообщение 19 49 пятница

Malleys 26.03.2019 15:02

Так вы можете так добавить к скрипту

if(dt > WEEK - 45 * MINUTE && dt < WEEK - 45 * MINUTE - SECOND) {
        // по пятницам в 19:45:00 что-то сделать, т. е. после 45 мин. игры
}


https://jsfiddle.net/pb5Lautf/

Malleys 26.03.2019 15:04

Кстати заметил, что http://worldclockapi.com/api/json/utc/now выдаёт время с точностью до минуты, а вам надо до секунды, надо найти другой сервер!

ddro3doff 26.03.2019 15:09

Цитата:

Сообщение от Malleys (Сообщение 505540)
Кстати заметил, что http://worldclockapi.com/api/json/utc/now выдаёт время с точностью до минуты, а вам надо до секунды, надо найти другой сервер!

А если по этому ?
https://time100.ru/api.php

Malleys 26.03.2019 15:16

Может быть, а вы пока проверьте такое

Вот PHP

<?php

header('Content-Type: application/json; charset=utf-8');
echo json_encode(array('currentDateTime' => 1000.0 * time()));


Опубликуйте его у себя на сервере, а затем в моём скрипте у себя на сервере поменяйте адрес в скрипте на сайте, там где fetch("https://...") Может оно у вас всё-таки правильно работает время на сервере...

Malleys 26.03.2019 15:18

Цитата:

Сообщение от ddro3doff
А если по этому ?
https://time100.ru/api.php

Нет, не получится... No 'Access-Control-Allow-Origin' header is present on the requested resource.

ddro3doff 26.03.2019 15:26

Цитата:

Сообщение от Malleys (Сообщение 505542)
Может быть, а вы пока проверьте такое

Вот PHP

<?php

header('Content-Type: application/json; charset=utf-8');
echo json_encode(array('currentDateTime' => 1000.0 * time()));


Опубликуйте его у себя на сервере, а затем в моём скрипте у себя на сервере поменяйте адрес в скрипте на сайте, там где fetch("https://...") Может оно у вас всё-таки правильно работает время на сервере...

Куда конкретно это вставить?

ddro3doff 26.03.2019 15:29

Цитата:

Сообщение от Malleys (Сообщение 505543)
Нет, не получится... No 'Access-Control-Allow-Origin' header is present on the requested resource.

Может это чем то поможет?
http://javascript.ru/forum/436963-post10.html

Malleys 26.03.2019 15:30

Цитата:

Сообщение от ddro3doff
Куда конкретно это вставить?

Например, создайте файл time.php в корневой папке сайта и в него вставьте. Затем в скрипте поменяйте адрес на http://vsmislie.ru/time.php

Malleys 26.03.2019 15:35

О, оно у вас правильно работает!

UPD теперь
fetch("https://cors-anywhere.herokuapp.com/http://worldclockapi.com/api/json/utc/now")
поменяйте на
fetch("http://vsmislie.ru/time.php")

ddro3doff 26.03.2019 15:37

Цитата:

Сообщение от Malleys (Сообщение 505546)
Например, создайте файл time.php в корневой папке сайта и в него вставьте. Затем в скрипте поменяйте адрес на http://vsmislie.ru/time.php

Сделал. Походу на сервере правильно время идет. Но почему то у меня в админке показывается украинское время.

ddro3doff 26.03.2019 15:43

Цитата:

Сообщение от Malleys (Сообщение 505547)
О, оно у вас правильно работает!

UPD теперь
fetch("https://cors-anywhere.herokuapp.com/http://worldclockapi.com/api/json/utc/now")
поменяйте на
fetch("http://vsmislie.ru/time.php")

Спасибо огромное Вам и Вашему форуму за оказанную помощь. Если ьы не вы , у меня наверно уже дымилась голова.
Осталась пару вопросов
Если будет необходимость поменять день недели, какие правки нужно будет указать в коде?
Можно добавить в код единоразовую перезагрузку страницы при начале игры?

ddro3doff 26.03.2019 15:51

Еще раз спасибо!

Malleys 26.03.2019 16:01

Цитата:

Сообщение от ddro3doff
При обновлении страницы отсчет не начинается сразу, только кода время доходит до 00 секунд таймер появляетс

Не понял, я очистил кеш для вашего сайта, сейчас работает как надо, с точностью до секунд.
Цитата:

Сообщение от ddro3doff
Если будет необходимость поменять день недели, какие правки нужно будет указать в коде?
Можно добавить в код единоразовую перезагрузку страницы при начале игры?

https://jsfiddle.net/pb5Lautf/2/ сравните код

ddro3doff 26.03.2019 16:04

Цитата:

Сообщение от Malleys (Сообщение 505552)
Не понял, я очистил кеш для вашего сайта, сейчас работает как надо, с точностью до секунд.
https://jsfiddle.net/pb5Lautf/2/ сравните код

Можно заменить на Ваш код , только с правкой fetch на мой сервер?

ddro3doff 26.03.2019 16:10

Malleys,
Спасибо Вам огромное!! все получилось!!! Завтра протестирую оповещения и поставлю скрипт в работу.

Malleys 26.03.2019 16:44

ddro3doff,
Кстати я маленькую ошибку сделал... эти условия никогда не выполняются

Неправильно!
if(dt > WEEK && dt < WEEK - SECOND) {
        // по пятницам в 19:00:00, т. е. в первую секунду игры
        location.reload();
    }
    
    if(dt > WEEK - 45 * MINUTE && dt < WEEK - 45 * MINUTE - SECOND) {
        // по пятницам в 19:45:00, т. е. на 45-ой минуте игры
    }
    
    if(dt > WEEK - 49 * MINUTE && dt < WEEK - 49 * MINUTE - SECOND) {
        // по пятницам в 19:49:00, т. е. на 49-ой минуте игры
    }


Надо все значки > и < поменять на противоположные

Правильно!
if(dt < WEEK && dt > WEEK - SECOND) {
        // по пятницам в 19:00:00, т. е. в первую секунду игры
        location.reload();
    }
    
    if(dt < WEEK - 45 * MINUTE && dt > WEEK - 45 * MINUTE - SECOND) {
        // по пятницам в 19:45:00, т. е. на 45-ой минуте игры
        alert("1");
    }
    
    if(dt < WEEK - 49 * MINUTE && dt > WEEK - 49 * MINUTE - SECOND) {
        // по пятницам в 19:49:00, т. е. на 49-ой минуте игры
        alert("2");
    }

ddro3doff 27.03.2019 09:32

Цитата:

Сообщение от Malleys (Сообщение 505564)
ddro3doff,
Кстати я маленькую ошибку сделал... эти условия никогда не выполняются

Неправильно!
if(dt > WEEK && dt < WEEK - SECOND) {
        // по пятницам в 19:00:00, т. е. в первую секунду игры
        location.reload();
    }
    
    if(dt > WEEK - 45 * MINUTE && dt < WEEK - 45 * MINUTE - SECOND) {
        // по пятницам в 19:45:00, т. е. на 45-ой минуте игры
    }
    
    if(dt > WEEK - 49 * MINUTE && dt < WEEK - 49 * MINUTE - SECOND) {
        // по пятницам в 19:49:00, т. е. на 49-ой минуте игры
    }


Надо все значки > и < поменять на противоположные

Правильно!
if(dt < WEEK && dt > WEEK - SECOND) {
        // по пятницам в 19:00:00, т. е. в первую секунду игры
        location.reload();
    }
    
    if(dt < WEEK - 45 * MINUTE && dt > WEEK - 45 * MINUTE - SECOND) {
        // по пятницам в 19:45:00, т. е. на 45-ой минуте игры
        alert("1");
    }
    
    if(dt < WEEK - 49 * MINUTE && dt > WEEK - 49 * MINUTE - SECOND) {
        // по пятницам в 19:49:00, т. е. на 49-ой минуте игры
        alert("2");
    }

Все работает , спасибо!
if(dt > WEEK && dt < WEEK - SECOND) {
        // по пятницам в 19:00:00, т. е. в первую секунду игры
        location.reload();
    }

Остался последний вопрос, как поставить этот таймер на 5 секунд?

Malleys 27.03.2019 09:54

Цитата:

Сообщение от ddro3doff (Сообщение 505611)
Остался последний вопрос, как поставить этот таймер на 5 секунд?

Что вы имеете ввиду? Если то, что страница должна перезагрузиться в 19:00:05, то

if(dt < WEEK - 5 * SECOND && dt > WEEK - 6 * SECOND) {
        // по пятницам в 19:00:05, т. е. в пятую секунду игры
        location.reload();
    }

ddro3doff 27.03.2019 10:00

Цитата:

Сообщение от Malleys (Сообщение 505613)
Что вы имеете ввиду?

Сейчас перезагрузка страницы происходит на первой секунде, а мне нужно допустим на пятой.

ddro3doff 27.03.2019 10:02

Цитата:

Сообщение от Malleys (Сообщение 505613)
Что вы имеете ввиду? Если то, что страница должна перезагрузиться в 19:00:05, то

if(dt < WEEK - 5 * SECOND && dt > WEEK - 6 * SECOND) {
        // по пятницам в 19:00:05, т. е. в пятую секунду игры
        location.reload();
    }

Да это именно то что нужно. Спасибо!!!


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