Как назвать сценарий оболочки из кода JavaScript?

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

Virtualbox имеет опции настроить кэш IO, на который Вы, возможно, должны посмотреть. Это влияет на простые программы, которые копируют данные, такие как CP.

3
30.10.2014, 02:47
2 ответа

Вот (непроверенный) пример с использованием Javascript и PHP и методологии, объясненной Энтоном. Не зацикливайтесь на синтаксисе и на том, работает это или нет, вы сможете исправить это позже. Обратите внимание на патер с сильным акцентом на валидацию данных.

Javascript:

if (validate()) { // Preliminary data check to preven unecessary request
   $.ajax(
      '/path/to/your-script', { // the URL where the php script is hosted
         'action': 'update', // variables passed to the server
         'id': '123',
         'value': 'New Value'
      }, function (response) { // server response
       if (typeof(response.success) == 'number' && response.success) {
         }
      }, 'json' // data format
   );

}

Рудиментарный шаблон PHP:

 // Make sure that the POST is done via ajax
 if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
       && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
   ) {
      // Template for multiple commands.
      switch ($_POST['action']) { // Catch all commands
          case 'update':
             // Make sure to clean up the value. Lookup tutorials on Google
             $id = sanitize($_POST['id'];
             $value = sanitize($_POST['value'];

             // Although sanitized make sure that the values pass certain
             // criteria such as duplicates, data type, user privileges etc
             if (validate($id, $value) {
                shell_exec("your '" . $id . "' '" . $value . "'";
             }
             break;
          // If we do not know what this is we can throw an exception
          default:
             throw new Exception ('Unknown Request');
      }
      // This is just an acknowledgement that the command executed. 
      // More validation and try catch constructs are highly recommended.
      echo json_encode([
              'success' => 1
           ]);

   }
0
27.01.2020, 21:27

Из-за проблем безопасности вы не можете сделать это, как вы можете, например, E.g. Вызовите двоичную программу из скрипта оболочки, некоторую программу из Python с использованием SubProcess.Check_Output () или любой из других механизмов на различных языках программирования.

Если вы хотите, чтобы этот вид функциональности, способ перейти к:

  1. запустить маленький веб-сервер локальный, т. Е. На машине
  2. разрешить JavaScript получить доступ к этому (некоторые новые версии браузеров блокируют определенные звонки, подобные этому)
  3. Нажатие кнопки вызывают некоторую JavaScript, который затем обращается к локальному веб-серверу, чтобы выполнить необходимую функцию.

Я использовал этот механизм, чтобы позволить печати, на локальной машине, из нескольких выбранных словных документов. Отправка списка документов перенаправляется на локальный веб-сервер (используя XML-RPC), который затем извлекает документы и запускает слово в пакетном режиме, чтобы распечатать их все.

2
27.01.2020, 21:27

Теги

Похожие вопросы