Ваш сценарий выглядит хорошо, но я столкнулся с подобными проблемами некоторое время назад, что я не был в недееспособных fix ...
Мой новый подход использует s3cmd для передачи файлов между ведрами S3 и моими экземплярами EC2. Вам просто нужно настроить его один раз, а затем вы можете запустить его через PHP. Это также более безопасно, потому что вам не нужно хранить свои учетные данные AWS внутри вашего скрипта.
На мой взгляд, скорость в порядке:
[email protected]:~/s3# s3cmd put test.bin s3://data.example.com/test.bin
test.bin -> s3://data.example.com/test.bin [part 1 of 13, 15MB]
15728640 of 15728640 100% in 0s 16.39 MB/s done
test.bin -> s3://data.example.com/test.bin [part 2 of 13, 15MB]
15728640 of 15728640 100% in 0s 15.55 MB/s done
test.bin -> s3://data.example.com/test.bin [part 3 of 13, 15MB]
15728640 of 15728640 100% in 0s 16.18 MB/s done
test.bin -> s3://data.example.com/test.bin [part 4 of 13, 15MB]
15728640 of 15728640 100% in 0s 17.32 MB/s done
test.bin -> s3://data.example.com/test.bin [part 5 of 13, 15MB]
15728640 of 15728640 100% in 0s 18.87 MB/s done
test.bin -> s3://data.example.com/test.bin [part 6 of 13, 15MB]
15728640 of 15728640 100% in 0s 16.58 MB/s done
test.bin -> s3://data.example.com/test.bin [part 7 of 13, 15MB]
15728640 of 15728640 100% in 0s 16.29 MB/s done
test.bin -> s3://data.example.com/test.bin [part 8 of 13, 15MB]
15728640 of 15728640 100% in 0s 16.95 MB/s done
test.bin -> s3://data.example.com/test.bin [part 9 of 13, 15MB]
15728640 of 15728640 100% in 0s 15.33 MB/s done
test.bin -> s3://data.example.com/test.bin [part 10 of 13, 15MB]
15728640 of 15728640 100% in 0s 17.01 MB/s done
test.bin -> s3://data.example.com/test.bin [part 11 of 13, 15MB]
15728640 of 15728640 100% in 0s 15.36 MB/s done
test.bin -> s3://data.example.com/test.bin [part 12 of 13, 15MB]
15728640 of 15728640 100% in 0s 16.56 MB/s done
test.bin -> s3://data.example.com/test.bin [part 13 of 13, 10MB]
11256320 of 11256320 100% in 0s 14.15 MB/s done
[email protected]:~/s3# s3cmd get s3://data.example.com/test.bin test.bin.new
s3://data.example.com/test.bin -> test.bin.new [1 of 1]
200000000 of 200000000 100% in 11s 16.20 MB/s done
Может быть, эта статья интересна, так: Network performance within Amazon EC2 and to Amazon S3
На самом деле я только что сделал этот сценарий, чтобы иметь возможность использовать его с Баш, так будет казаться s3cmd для меня совершенно не нужен PHP. Я проверю это. –
Я использую s3cmd сейчас, и это намного быстрее, около 10 МБ/с. Либо это просто быстрее сегодня, либо PHP SDK работает медленнее (возможно, привязана к процессору, поскольку экземпляр является небольшим), но по какой-то причине кажется, что эта проблема решена. –
Рад это услышать :-) – dom