Передача файла js из php в mongo

0

У меня есть сложный файл js, который делает некоторые тяжелые вычисления и сохраняет результат в коллекции. Это написано в js, потому что я не могу заявить о передаче данных.

в настоящее время я передаю скрипт в оболочку mongo следующим образом: $ mongodb <path_to_script

Сценарий состоит из нескольких функций?

Можно ли выполнить его с PHP? Я видел, что есть параметр "nolock", который может быть передан методу evel, можно ли использовать его при выполнении из оболочки или из PHP?

Что считается более безопасным, используя php execute wrapper или исполняющий скрипт из оболочки?

Теги:

2 ответа

1

Когда вы запускаете файл.js в оболочке mongo, он не запускает javascript на сервере; он запускает его в оболочке. Вы используете функции javascript на стороне сервера, такие как db.eval и map/reduce в сценарии оболочки mongo?

В любом случае, я предлагаю отказаться от сценария оболочки и серверных функций javascript и либо использовать структуру агрегации для обработки на стороне сервера, либо реализовать логику в коде приложения PHP. На стороне сервера javascript имеет серьезные ограничения производительности и безопасности, и лучше избегать использования его, когда это возможно.

  • 0
    Операция запланирована на каждый час (cron). Я не мог реализовать это с помощью структуры агрегации / map-Reduce, потому что я упустил возможности. Почему запускать js небезопасно?
0

Вы можете прочитать файл js и выполнить его на PHP, используя execute, который является оболочкой для команды eval. Опция nolock может быть добавлена в аргументы.

$code = file_get_contents('filenam.js');
$db->execute($code, array('nolock' => true));

Инсталляция php execute должна быть более безопасной и лучшей. Если вы выполняете js с использованием оболочки в PHP, вам нужно будет дать разрешение php на выполнение сценария оболочки с помощью shell_exec(), что невозможно, если вы используете хостинг и не имеете права администратора на хосте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню