Hi,
i'm really stuck on creating a .php file that i can run every few hours to get my site reindexing. I'm using magento 2.1 CE
so far i have stuck a file called cron.php in my public_html folder and am using the code below, most of it i found online apart from the following line 'magento indexer:reindex':
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
require_once __DIR__ . '/app/bootstrap.php';
$status = new \Magento\Update\Status();
$cronReadinessChecker = new \Magento\Update\CronReadinessCheck();
if (!$cronReadinessChecker->runReadinessCheck()) {
exit('Cron readiness check failed');
}
if ($status->isUpdateInProgress()) {
exit('Cron is already in progress...');
}
if ($status->isUpdateError()) {
exit('There was an error in previous Updater jobs...');
}
magento indexer:reindex
$backupDirectory = BACKUP_DIR;
if (!file_exists($backupDirectory)) {
if (!mkdir($backupDirectory)) {
$status->add(sprintf('Backup directory "%s" cannot be created.', $backupDirectory));
exit();
}
chmod($backupDirectory, 0770);
}
try {
$status->setUpdateInProgress();
} catch (\RuntimeException $e) {
$status->add($e->getMessage());
exit();
}
$jobQueue = new \Magento\Update\Queue();
try {
while (!empty($jobQueue->peek()) &&
strpos($jobQueue->peek()[\Magento\Update\Queue::KEY_JOB_NAME], 'setup:') === false
) {
$job = $jobQueue->popQueuedJob();
$status->add(
sprintf('Job "%s" has been started', $job)
);
try {
$job->execute();
$status->add(sprintf('Job "%s" has successfully completed', $job));
} catch (\Exception $e) {
$status->setUpdateError();
$status->add(
sprintf('An error occurred while executing job "%s": %s', $job, $e->getMessage())
);
$status->setUpdateInProgress(false);
};
}
} catch (\Exception $e) {
$status->setUpdateError();
$status->add($e->getMessage());
} finally {
$status->setUpdateInProgress(false);
}
Any help on this would be greatly appreciated
Thanks in advance!
Ian
or even scrap the code i put in and does anyone know the code required for the the php file to just reindex all the indexes i dont care about it doing anything else
Hi @chimper
Have you configured a cron for your Magento installation?
Please read this documentation Configure and run cron
Please read following documentation Manage Indexes for more information.
If you have already done all these please update your question with more details to get any help.
Thanks for the reply !
at the minute im using cpanel and have this as my command:
/opt/bin/php /home/downloa1/public_html/cron.php magento indexer:reindex [indexer]
which im running but still no luck.
i basically downloaded the 2.1 version off of the site and put it all straight in to the public_html folder.Really not sure what i need to do now to make it work
The files from Magento 2 do not belong in the public folder.
You have to place them somewhere outside of the public folder and make a symlink to your pub folder from your public_html folder. Or change the root folder for your virtual host to be the pub folder within the magento folder.
Then don't forget to deploy static files though.