Google HTTP目标任务:尝试使用php设置ScheduleTime时,应使用Google\Protobuf\Timestamp

Google HTTP目标任务:尝试使用php设置ScheduleTime时,应使用Google\Protobuf\Timestamp,php,laravel,google-cloud-functions,google-cloud-tasks,Php,Laravel,Google Cloud Functions,Google Cloud Tasks,我一直在尝试将setScheduleTime添加到云任务中。我已经做了以下工作: use Google\Cloud\Tasks\V2\CloudTasksClient; use Google\Cloud\Tasks\V2\HttpMethod; use Google\Cloud\Tasks\V2\HttpRequest; use Google\Cloud\Tasks\V2\Task; class CreateRandomCloudTasksForLot { putenv('GO

我一直在尝试将setScheduleTime添加到云任务中。我已经做了以下工作:

use Google\Cloud\Tasks\V2\CloudTasksClient;
use Google\Cloud\Tasks\V2\HttpMethod;
use Google\Cloud\Tasks\V2\HttpRequest;
use Google\Cloud\Tasks\V2\Task;

class CreateRandomCloudTasksForLot
{
        putenv('GOOGLE_APPLICATION_CREDENTIALS=/service-account.json');
        $client = new CloudTasksClient();
        $queueName = $client->queueName($this->projectID, $this->location, $this->queue);

        $httpRequest = new HttpRequest();
        $httpRequest->setUrl('https://europe-west1-myproject.cloudfunctions.net/mybidfunction?id=1');        
        $httpRequest->setHttpMethod(HttpMethod::GET);
        
        if (isset($payload)) {
            $httpRequest->setBody($payload);
        }

        // Create a Cloud Task object.
        $task = new Task();
        $task->setScheduleTime(strtotime(Carbon::now()->addMinutes(20)));
        $task->setHttpRequest($httpRequest);

        // Send request and print the task name.
        $response = $client->createTask($queueName, $task);
        printf('Created task %s' . PHP_EOL, $response->getName());
}
它给了我以下的错误


在不超过预定时间的情况下,我可以创建任务,但我需要在特定时间安排任务。我不能使用appEngineTask,因为我们只能通过RelativeUri。我想传递要执行的云函数URL。有人能帮我吗?

我发现了问题。希望它能帮助一些人,因为他们的文档中根本没有提到

添加此
使用Google\Protobuf\Timestamp

        $future_time_seconds = time() + 300;
        $future_timestamp = new Timestamp();
        $future_timestamp->setSeconds($future_time_seconds);
        $future_timestamp->setNanos(0);
        $task->setScheduleTime($future_timestamp);
        $task->setHttpRequest($httpRequest);
将Google\Protobuf\Timestamp的对象传递给
setScheduleTime
。在深入研究核心文件之后,我发现它应该是一个对象。错误应该更具描述性

就这些:)