두 파일을 사용하여 달성 할 수 있습니다.
다음과 같이 프로젝트 루트에 폴더와 클래스를 만듭니다.
크론 /CronprocessApp.php
<?php
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\App\Filesystem\DirectoryList;
use phpseclib\Net\SFTP;
use phpseclib\Crypt\RSA;
class CronprocessApp
extends \Magento\Framework\App\Http
implements \Magento\Framework\AppInterface{
public function __construct(
\Magento\Framework\App\State $state,\Magento\Framework\App\Response\Http $response)
{
$this->_response = $response;
//$state->setAreaCode('any area'); // or 'adminhtml', depending on your needs
$state->setAreaCode('adminhtml'); // or 'adminhtml', depending on your needs
}
public function launch()
{
/** @var \Vendor\Module\Cron\Test $cron */
$cron = \Magento\Framework\App\ObjectManager::getInstance()
->create('Custom\Preorder\Cron\ChangeVisiblityNonPreorderProduct'); //pass the name of your cron class path
$cron->execute();
return $this->_response;
}
public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception)
{
return false;
}
}
?>
다른 클래스 파일을 작성하십시오.
crons / Cronprocess.php
<?php
require __DIR__ . '/../app/bootstrap.php';
require __DIR__ . '/../crons/cronprocessApp.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('CronprocessApp');
$bootstrap->run($app);
cron을 실행하려면 프로젝트 루트 경로로 cli로 이동하여 아래 명령을 실행하십시오.
php crons/cronprocess.php
require '../app/bootstrap.php';
TestApp.php에도 : 가 있어야합니다.return $this->_response;
또는 phpstorm 스크린 샷에는 있지만 실제 코드는 아닌 오류가 발생합니다. 나는 이것으로 당신의 대답을 편집하고 시도 할 것입니다.