Как исправить ошибку ввода - ссылку выводит только для предыдущего сообщения?
Подключил PHP скрипт к боту на Node.js, и после запроса оно должно выдавать ссылку, но оно выводит только для предыдущего сообщения:
var runner = require("child_process");
var phpScriptPath = "file.php";
var argsString = "value,value2,value";
runner.exec("php " + phpScriptPath + " " +argsString, function(err, phpResponse, stderr) {
if(err) console.log(err); /* log error */
const chatId = msg.chat.id;
bot.sendMessage(chatId, phpResponse );
});
Nа PHP просто: echo = $source;
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Скорее всего, проблема в логике реализованной в file.php (или проблема связана с передаваемыми параметрами)
Ваш скрипт нормально работает, это легко подтвердить:
переписал запускаемый exec-ом скрипт на более близкий мне perl
const runner = require('child_process');
const path = require('path');
const phpScriptPath = path.join(__dirname, './script.pl');
const argsString = `value,value2,value,${Date.now()}`;
runner.exec(
`/usr/local/bin/perl ${phpScriptPath} ${argsString}`,
(err, phpResponse) => {
if (err) {
console.log(err);
}
console.log(`RESULT=${phpResponse}`);
}
);
В консоли всё как ожидалось - эхо, метка времени обновляется:
$ node src/child-process-perl/index.js
RESULT=$VAR1 = {
'time' => 1620913465,
'argv' => [
'value,value2,value,1620913463899'
]
};
$ node src/child-process-perl/index.js
RESULT=$VAR1 = {
'time' => 1620913469,
'argv' => [
'value,value2,value,1620913467212'
]
};