عندما تقوم بنقل جميع الملفات والمجلدات من مجلد إلى آخر في دلو S3 باستخدام PHP، فإن الطريقة الشائعة للقيام بذلك تتضمن خطوات معينة، كما ذكرت:
- الحصول على قائمة جميع الكائنات (الملفات والمجلدات) من المجلد المصدر.
- نسخ جميع الكائنات إلى المجلد الوجهة.
- حذف جميع الكائنات من المجلد المصدر.
ومع ذلك، هناك طريقة أخرى تسمح بتنفيذ هذه العملية بشكل أقصر، وهي باستخدام وظيفة واحدة تقدمها مكتبة AWS SDK for PHP. يمكنك استخدام وظيفة copyObject
مع تمرير معرفات المجلدات المصدر والوجهة، وذلك بدلًا من القيام بالخطوات الثلاثة المذكورة:
php
require 'vendor/autoload.php'; // تحميل ملف تعريف الطلبات الخاص بـ AWS
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
// معلومات الاعتماد وإعداد العميل
$credentials = new Aws\Credentials\Credentials('your-access-key', 'your-secret-key');
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'your-region',
'credentials' => $credentials
]);
// اسماء المجلدات المصدر والوجهة
$sourceFolder = 'source-folder';
$destinationFolder = 'destination-folder';
try {
// نسخ كل الكائنات من المجلد المصدر إلى المجلد الوجهة
$objects = $s3Client->listObjectsV2([
'Bucket' => 'your-bucket-name',
'Prefix' => $sourceFolder // ابحث عن الكائنات التي تبدأ بـ $sourceFolder
]);
foreach ($objects['Contents'] as $object) {
$sourceKey = $object['Key'];
$destinationKey = str_replace($sourceFolder, $destinationFolder, $sourceKey);
// نسخ الكائن من المجلد المصدر إلى المجلد الوجهة
$s3Client->copyObject([
'Bucket' => 'your-bucket-name',
'CopySource' => 'your-bucket-name/' . $sourceKey,
'Key' => $destinationKey
]);
}
// حذف جميع الكائنات من المجلد المصدر
$s3Client->deleteObjects([
'Bucket' => 'your-bucket-name',
'Delete' => [
'Objects' => array_map(function ($object) {
return ['Key' => $object['Key']];
}, $objects['Contents'])
]
]);
echo "تم نقل جميع الملفات والمجلدات بنجاح.";
} catch (AwsException $e) {
echo $e->getMessage();
}
?>
باستخدام هذا الكود، يتم نسخ جميع الكائنات (الملفات والمجلدات) من المجلد المصدر إلى المجلد الوجهة مباشرة، ثم يتم حذف جميع الكائنات من المجلد المصدر، كل ذلك في ثلاثة أسطر فقط من الكود.
المزيد من المعلومات
بالتأكيد، إليك استكمال للمقال:
باستخدام الكود السابق، يمكنك الآن تنفيذ عملية نقل الملفات والمجلدات بسرعة وكفاءة في دلو Amazon S3 باستخدام لغة PHP. يُظهر هذا الكود كيف يمكن استخدام وظيفة copyObject
المتوفرة في AWS SDK for PHP لنسخ الكائنات من مجلد إلى آخر، وبعد ذلك يتم حذفها باستخدام وظيفة deleteObjects
.
هذه الطريقة توفر حلاً بديلًا للخطوات الثلاث التي ذكرتها سابقًا، مما يقلل من تعقيد الكود ويجعل عملية النقل أكثر فعالية. بالإضافة إلى ذلك، يمكنك تكييف هذا الكود لتنفيذ أوامر أخرى مثل البحث عن ملفات معينة أو تغيير أذونات الوصول، مما يجعله أداة مرنة وقوية لإدارة محتوى دلو Amazon S3.
ومن الجدير بالذكر أنه قبل استخدام هذا الكود في بيئة إنتاجية، يجب عليك التأكد من تكوين المتغيرات بشكل صحيح مثل اسم الدلو ومعلومات الاعتماد، كما يجب أن تتحقق من صلاحيات الوصول إلى دلو Amazon S3 المستهدفة.
بهذا، يمكنك الآن البدء في استخدام هذا الكود لنقل الملفات والمجلدات بسرعة وسهولة بين مجلدين داخل دلو Amazon S3 باستخدام لغة PHP.