Я пытаюсь сделать AWS
Lambda
функция запуска PHP
код и MySQL
,
Для этого я последовал этот урок и удалось получить PHP
работает, но когда я пытаюсь добавить свой MySQL
код я получаю ошибку. Ошибка не говорит о многом, это выглядит так:
"errorMessage": "RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Process exited before completing request"
И журнал идет как
START RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Version: $LATEST
2017-02-27T19:08:12.544Z 14a46e73-xxx-xxx-b810-11db18dxxx0 SyntaxError: Unexpected token F
at Object.parse (native)
at ChildProcess.<anonymous> (/var/task/php.js:29:34)
at emitTwo (events.js:87:13)
at ChildProcess.emit (events.js:172:7)
at maybeClose (internal/child_process.js:821:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
END RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0
REPORT RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Duration: 293.96 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 12 MB
RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Process exited before completing request
Похоже, что жалуется на Unexpected token F
но я не могу найти ничего, что могло бы вызвать проблему с моим кодом, что довольно просто, поскольку я просто проверял, могу ли я подключиться к MySQL.
мой PHP
код следующий
$servername = "xx";
$username = "xx";
$password = "xx";
$dbname = "xx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
//die("Connection failed: " . $conn->connect_error);
}//If I remove everything above this line it works
$data = stream_get_contents(STDIN);
$json = json_decode($data, true);
$result = json_encode(array('result' => count($json)));
echo $result;
Как вы можете видеть, я только что добавил простое соединение с MySQL к коду в руководстве. Когда я удаляю эту часть, код работает нормально.
В этот момент я начинаю задумываться, возможно ли это вообще вообще.
Любые советы в правильном направлении будут оценены.
php.js
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];
const spawn = require('child_process').spawn;
exports.handler = function(event, context) {
//var php = spawn('php',['helloLambda.php']); //local debug only
var php = spawn('php-7-bin/bin/php',['hello.php']);
var output = "";
//send the input event json as string via STDIN to php process
php.stdin.write(JSON.stringify(event));
//close the php stream to unblock php process
php.stdin.end();
//dynamically collect php output
php.stdout.on('data', function(data) {
output+=data;
});
//react to potential errors
php.stderr.on('data', function(data) {
console.log("STDERR: "+data);
});
//finalize when php process is done.
php.on('close', function(code) {
context.succeed(JSON.parse(output));
});
}
Задача ещё не решена.
Других решений пока нет …