I'm working with the Amazon S3 and the AWS SDK for PHP.
I'm trying to use MultiPartUpload to upload my files but I have this error:
PHP Catchable fatal error: Argument 2 passed to Guzzle\Service\Client::getCommand() must be of the type array, string given, called in /var/www/html/aws/Guzzle/Service/Client.php on line 76 and defined in /var/www/html/aws/Guzzle/Service/Client.php on line 79
This error occurs when I put more than 10 simultaneous uploads.
Anyone knows why?
PHP: (connection.php
)
use Aws\Common\Exception\MultipartUploadException;
use Aws\S3\Model\MultipartUpload\UploadBuilder;
use Aws\S3\S3Client;
$uploaded = (object) $_FILES['uploaded_file'];
$this->file = $uploaded->tmp_name;
$arrayConfig = array(
'key' => $this->accessKey,
'secret' => $this->secretKey
);
$this->awsClient = S3Client::factory($arrayConfig);
$uploader = UploadBuilder::newInstance()
->setClient($this->awsClient)
->setSource($this->file)
->setBucket($this->bucket)
->setKey($this->file_name_id)
->build();
I have a crontab service with 10 commands at same time:
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
*/05 * * * * /usr/bin/php /home/user/upload_test.php
upload_test.php:
$local_file = '/home/user/file.zip';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_VERBOSE, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)" );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_URL, 'http://localhost/connection.php' );
$post_array = array(
"uploaded_file" => "@" . $local_file,
"function" => "upload"
);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_array );
$response = curl_exec( $ch );