2015-11-29 3 views
0

Я искал и нашел некоторые предложения по моему вопросу, но почти все они выполняют php-файлы, поэтому я не знаю, связано ли это с чем-то, что не работает для меня.running C exec in php background

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

<?php 

exec("sudo ./EscalonVel 50 2 100 10 20 &> /dev/null &"); 
echo "Hello"; 
?> 
+0

Попробуйте 'gpio написать 28 0 &'. Хотя я не понимаю, почему вы хотите это сделать! –

+0

Я даже пробовал комментировать, не повезло –

+0

Кажется, что вы внедряете неправильное решение. Что делает сценарий? –

ответ

0

Если вам нужно показать данные страницы, рассчитанные по сценарию С, то «кому-то» придется подождать, пока он не будет готов, чтобы показать это. Если данные поступают непосредственно из исполняемой команды (output/stdout выполнения), то вы не можете выполнить команду &: выход может появиться после отправки запроса, а обработка фонового вывода отключается от фактического выполнения. Так у вас есть 2 варианта:

  1. Показать страницу «шаблон» полностью и подготовить его принять содержание в самом конце вашего HTML (неоптимальной, но это возможно)
  2. ли страница 2 запроса: первые показы шаблон (полная страница) и второй (AJAX) заполняют его данными из выполнения команды. В зависимости от того, как вы его записываете, AJAX может выполнять несколько запросов до тех пор, пока команда не будет завершена, что предпочтительнее, если скрипт работает более 20 секунд. Затем вам потребуется какая-то проверка процесса, а некоторые бэкэнд - для сохранения (по команде) и просмотра (по запросу AJAX) данных в виде файла или базы данных.

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

+0

thx, возможно, не объяснил меня полностью, фоновый процесс вставляет некоторые строки в базу данных mysql, поэтому мой подход заключается в вызове сценария и последующем запуске для обновления данных на странице с данными из БД. –

+0

Затем вам необходимо выполнить вызовы AJAX, чтобы проверить, завершен ли процесс. В зависимости от времени выполнения процесса эти вызовы могут быть 10 секунд от следующего, или они могут составлять 10 минут. Если процесс еще не закончен, вызовите другой запрос AJAX за X секунд (с помощью 'setTimeout'). Если да, то представить данные. Я не знаю, какие именно данные. Это может быть хорошо с JSON, JavaScript или простым HTML. Это зависит от вас и ваших потребностей. – emi

+0

Нет такой вещи, как скрипт [tag: c]. –