У меня есть большой файл (200 МБ вверх). Мне нужно передать его через задание PHP cron. Использование Phpseclib
дает следующую ошибку:
Разрешенный размер памяти 134217728 байт исчерпан (пытался выделить 4133 байта) в /app/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
Есть ли способ сделать это с помощью PHP cron job
?
Код прост: одна строка, где $localFile — это уже существующий CSV-файл.
$sftp->put('/Import/coupons/coupons_import_test.csv', $localFile, NET_SFTP_LOCAL_FILE);
ПС. Это необходимо сделать после того, как PHP
сгенерирует этот файл в папке /tmp
, поэтому необходимо учитывать время сценария передачи.
[Изменить] Я не собираюсь увеличивать лимит памяти, так как файлы позже могут быть большего размера. Решение, в котором я могу передавать файл по частям (режим добавления) или использовать какой-либо сценарий оболочки с PHP cron, может быть полезным.
Размер файла на удаленном сервере составляет 111,4 МБ, в то время как фактический файл намного больше на локальном.
[Редактировать после исправления] Проблема исчезла после перехода на версию 2.0.2 с версии 1.0. Мне пришлось изменить код для установки
$sftp->put('/Import/coupons/coupons_import.csv', $localFile, $sftp::SOURCE_LOCAL_FILE);
Phpseclib
? - person revo   schedule 14.07.2016