периодически запускать скрипт php с интервалом времени, используя JavaScript

Есть ли возможность периодически запускать php-скрипт с использованием JavaScript?
Я пробовал несколько событий и времени в JavaScript, но я все еще не удовлетворен.
Я создал файл php для извлечения файла json из URL.
Теперь я хочу запускать свой php-файл каждый интервал времени, заданный пользователями при вводе.

Моя форма имеет следующие свойства:

URI
Начните
Конец
интервал

Вот мой PHP-код:

function toCsv(){
//Date Format
$date=date("M-d-Y, \a\\t g.i a", time());
//URI API Endpoint
//$uri="https://data.cityofchicago.org/resource/t2qc-9pjd.json";
$uri= $_POST['input_uri'];
//Time interval
$interval= $_POST['set_timer'];
//Named File
$file_name= $_POST['file_name'];
//Get File JSON
$json=file_get_contents($uri);

$filecsv = fopen("dataset/csv/dataset-".$file_name."-".$date.".csv", "w") or die("Unable to open file!");
$array = json_decode($json, true);
$firstLineKeys = false;
foreach ($array as $line)
{
if (empty($firstLineKeys))
{
$firstLineKeys = array_keys($line);
fputcsv($filecsv, $firstLineKeys);
$firstLineKeys = array_flip($firstLineKeys);
}

fputcsv($filecsv, array_merge($firstLineKeys, $line));
}
}

0

Решение

Просто используйте setInterval и выполните ajax-запрос (каждые 5 секунд в примере)

setInterval(function(){
$.post('1.php?', {input_uri:"value", set_timer:"value", file_name:"value"},
function(data){
//do something with the information returned from the php file
}, 'html')
}, 5000);

Вы должны заменить «значение» фактическим значением поля ввода (например, input_uri:$("#input_uri").val(),

1

Другие решения

как насчет…

function getJSON(){
setTimeout(function(){
$.post( "YOUR PHP FILE NAME", {input_uri : "//form data", file_name : "//form data" } )
.done(function( data ) {
alert("php function ran");
});
getJSON();
}, 3000); // Edit this timing here to set the interval (milliseconds)
}

и в вашем php-файле вам просто нужно убедиться, что вы запускаете свою функцию внизу …

        fputcsv($filecsv, array_merge($firstLineKeys, $line));
}
}

toCsv();

надеюсь это поможет!

0

Еще один простой способ сделать это на главной странице:

<iframe src="csv_file.php?input_uri=value[...]" style="display:none;"></iframe>

И по вашему csv_file.php Вы добавляете эту строку в конце:

<meta http-equiv="refresh" content="5">

бытие 5 количество секунд для обновления.

Этот метод не требует любой javascript и работает на большинстве веб-браузеров (кроме текстовых браузеров и браузеров с отключенными фреймами).


В случае, если пользователю нужно отредактировать значение, можно отправить форму (в зависимости от того, каким образом она отправляется) и добавить параметр.

Для простоты можно назвать это refresh,
Пример использования параметра:

Вы используете это на своей главной странице:

<iframe src="csv_file.php?input_uri=value[...]&refresh=5" style="display:none;"></iframe>

На csv_file.phpВы используете это:

<meta http-equiv="refresh" content="<?php echo isset($_REQUEST['refresh']) && ($_REQUEST['refresh']=(int)$_REQUEST['refresh'])?$_REQUEST['refresh']:'5'; ?>">
0
По вопросам рекламы [email protected]