Можно ли обновить сайт до изменения с помощью Javascript? - PullRequest
1 голос
/ 15 февраля 2011

Я относительно новый кодер, и я немного искал здесь и в Google, прежде чем спрашивать, но я пришел пустым.

Мне было интересно, есть ли способ создать скрипт, скажем,Javascript, и он должен обновлять страницу до тех пор, пока не произойдет изменение на странице путем ввода страницы в строку.

Что-то вроде (простите за странный псевдо-код, но я понимаю, что некоторые функции потребуютсяоб этом написано:

Start

currentPage = webclient.getPage("www.somesite.com")
boolean diff = false
string pageText = currentPage.astext()

do {
   currentPage.refresh()
} until (currentPage.astext() != pageText)

string alert = "Change Found"
string address = "me@somesite.com"
e-mail(address,alert)

END

Спасибо за любую помощь, кто-нибудь может предложить новый кодер по этому вопросу:)

1 Ответ

1 голос
/ 15 февраля 2011

PHP лучше подходит для такого рода операций. Вот что я бы сделал:

  • Получить содержимое страницы с помощью cURL
  • Подождите немного (например, 1 мин) *
  • Получить содержимое страницы снова
  • Сравнить оба содержимого страницы
  • электронная почта, если есть изменения и все равно начать сначала

* Вы не хотите обновлять страницу так часто, как это делает ваш псевдокод, поскольку ваш скрипт потребляет большую пропускную способность и, скорее всего, насыщает целевой веб-сайт.

Вам нужны примеры кода?

EDIT
Вот мой рабочий PHP-скрипт:

<?php
////////////////
// Parameters //
////////////////
$url = 'http://www.example.com';
$sleepyTime = 60; // seconds
$recipient = 'xxx@xxx.xx';
$subject = 'Change found';
$message = 'Change found in ' . $url;

////////////////
// Functions  //
////////////////
function fetchWebsiteContent($url) {
    // init curl handle
    $ch = curl_init($url);

    // Tells curl to return the content
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // fetch content
    $res = curl_exec($ch);

    // close handle and return content
    curl_close($ch);
    return $res;
}

////////////////////
// The comparison //
////////////////////
$firstContent = fetchWebsiteContent($url);

// This is an endless checking scope
while (1) {
    // sleep a bit and fetch website content again
    sleep($sleepytime);
    $secondContent = fetchWebsiteContent($url);

    // check if change occured
    if ($firstContent == $secondContent) {
        mail($recipient, $subject, $message);
    }

    $firstContent = $secondContent;
}
?>

Полезные ресурсы:
cURL инструкция
Почтовое руководство

Надеюсь, вам понравится;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...