Я хочу запустить программу, написанную на c ++, на повторяющемся веб-сервере.
Потому что есть кое-что, что php не может сделать, но c ++ может сделать это легко.
Я искал и обнаружил, что это можно сделать с помощью exec
функция в php.
Я использовал это в JS setInterval
запускать эту программу каждые 100 мс.
Но похоже, что эта программа запускается при загрузке веб-страницы и в коде js, у меня такой же вывод.
например, когда я хочу получить текущую дату из программы на С ++. код cpp:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
time_t now = time(0);
tm *ltm = localtime(&now);
cout << 1 + ltm->tm_sec;
return 0;
}
И в index.php
Файл, который я использовал для печати текущей секунды на странице каждые 100 мс.
<script>
setInterval(function(){
var date = "<?php passthru("print_date.exe"); ?>";
document.write(date + "<br>");
},100);
</script>
но печатает всегда одинаково!
Есть ли другой способ сделать это?
Спасибо!
Потому что PHP-код выполняется только 1 раз. Используйте Ajax в качестве опции.
// обновлено на следующий день.
1. файл (index.php)
<script>
var aj;
setInterval(function()
{
aj = new XMLHttpRequest();
aj.open('GET',"/print_date.php",false);
aj.onreadystatechange = processData;
aj.send(null);
},1000);
function processData()
{
var date = '';
if (aj.readyState == 4)
{
date = aj.responseText;
document.write(date + "<br>")
}
}
</script>
Это очень простой синхронный AJAX. интервал равен 1000, а не 100, потому что 1000 мс = 1 с (программа на C ++ возвращает время в секундах!).
2) Итак, print_date.php
<?php
error_reporting(0); //because any warning destroys output for ajax
passthru("print_date.exe");
Других решений пока нет …