Php 在另一个http客户端请求完成后,如何发出http客户端请求?

Php 在另一个http客户端请求完成后,如何发出http客户端请求?,php,symfony,symfony-http-client,Php,Symfony,Symfony Http Client,在我的Symfony函数中,我正在创建一个文件夹,在该文件夹中创建另一个文件夹: $client = HttpClient::create(); $createFolder = $client->request('MKCOL', $path.$foldername, [ 'auth_basic' => [$user, $authKey], ]); $createImageFolder = $client->request('MKCOL', $path.$foldernam

在我的Symfony函数中,我正在创建一个文件夹,在该文件夹中创建另一个文件夹:

$client = HttpClient::create();

$createFolder = $client->request('MKCOL', $path.$foldername, [
'auth_basic' => [$user, $authKey],
]);


$createImageFolder = $client->request('MKCOL', $path.$foldername/images', [
'auth_basic' => [$user, $authKey],
]);
它工作正常,但有时第一个文件夹创建速度不够快,无法创建图像文件夹。有没有一种方法可以让第二个请求等待,直到创建第一个文件夹?

$client->request()
是异步的。您可以使用
$client->getStatusCode()
等待响应,然后再执行下一个操作。您还可以使用此选项确认第一次操作是否成功

$client = HttpClient::create();

$createFolder = $client->request('MKCOL', $path.$foldername, [
    'auth_basic' => [$user, $authKey],
]);

$code = $createFolder->getStatusCode();
if ($code < 300) { // Creation was successful
    $createImageFolder = $client->request('MKCOL', $path.$foldername/images', [
        'auth_basic' => [$user, $authKey],
    ]);
}
$client=HttpClient::create();
$createFolder=$client->request('MKCOL',$path.$foldername[
“auth_basic”=>[$user,$authKey],
]);
$code=$createFolder->getStatusCode();
如果($code<300){//创建成功
$createImageFolder=$client->request('MKCOL',$path.$foldername/images'[
“auth_basic”=>[$user,$authKey],
]);
}
来自:

响应总是异步的,因此对方法的调用会立即返回,而不是等待接收响应:


在您尝试创建子文件夹之前,是否有一种方法可以检查该文件夹是否存在?@El_Vanja是的,我可以这样做。但如果文件夹尚不存在,则不会创建子文件夹。你知道我的意思吗?然后我仍然有问题谢谢,我测试了它,得到了错误消息:
试图调用类“Symfony\Component\HttpClient\CurlHttpClient”中名为“getStatusCode”的未定义方法。
啊,我想我必须编写
$createFolder->getStatusCode()可以吗?是的,很抱歉。我刚刚修复了它。我再次检查了它,子文件夹没有创建,因为代码是
201
。这是什么意思?@0stone0这显然是上下文关系。对于这一点,201可能是要检查的正确代码。