Triggering renders from PHP
available from v3.3.96
To trigger a Lambda render using PHP, install the remotion/lambda package using composer. Use the same version as the remotion version you are using from NPM and pin the version by removing the ^ character in your composer.json.
Below is a snippet showing how to initiate a render request and get its status. Note the following before continuing:
- You first need to complete the Lambda setup.
- Set the following environment variables - the example below supports
.envfiles:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYREMOTION_APP_REGIONREMOTION_APP_FUNCTION_NAMEREMOTION_APP_SERVE_URL
<?php
use Aws\Credentials\CredentialProvider;
// We'll assume you use Composer, which will add autoload.php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dotenv\Dotenv;
use Remotion\LambdaPhp\PHPClient;
use Remotion\LambdaPhp\RenderParams;
// Load environment variables
// Use "unsafe" because AWS reads environment variables from getenv(), not $_ENV
$dotenv = Dotenv::createUnsafeImmutable(__DIR__);
$dotenv->load();
// Specify the region you deployed to, for example "us-east-1"
$region = getenv('REMOTION_APP_REGION');
// Specify the function you would like to call
$functionName = getenv('REMOTION_APP_FUNCTION_NAME');
// Specify the URL to your Webpack bundle
$serveUrl = getenv('REMOTION_APP_SERVE_URL');
$provider = CredentialProvider::defaultProvider();
// Instantiate the client
$client = new PHPClient($region, $serveUrl, $functionName, $provider);
// Initiate the param object and customize as needed
$params = new RenderParams();
$params->setComposition('react-svg');
// Set input props
$params->setInputProps(['message' => 'yo whats up']);
// Execute the render and get the response
$renderResponse = $client->renderMediaOnLambda($params);
// Output render response
print_r($renderResponse);
// Get render progress
$renderId = $renderResponse->renderId;
$bucketName = $renderResponse->bucketName;
$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);
while (!$renderProgressResponse->done) {
// Render is not done
// Get the render progress
$renderProgress = $renderProgressResponse->overallProgress;
// Output render progress
print_r("progress: " . ($renderProgress * 100) . "%\n");
// Wait 1 second
sleep(1);
// Get render progress again
$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);
}
print_r("Render is done!\n");Changelog
v4.0.15: The fields are now typed.->setInputProps()now works as intended, serializing the input props to JSON for you.v4.0.6: The response payload structure has changed. See the history of this page to see the previous structure.