次の2つのファイルを使用して実現できます。
次のようなプロジェクトのルートにフォルダーとクラスを作成します。
crons / 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スクリーンショットにあるエラーがスローされますが、実際のコードはスローされません。これであなたの答えを編集してみます。