Een aangepaste uitsnijdtaak configureren
Deze geleidelijke zelfstudie laat zien hoe u een aangepaste uitsnijdtaak en eventueel een uitsnijdgroep in een voorbeeldmodule kunt maken. U kunt een module gebruiken u reeds hebt of u kunt een steekproefmodule van onze magento2-samples
bewaarplaatsgebruiken.
Als u de uitsnijdtaak uitvoert, wordt een rij toegevoegd aan de cron_schedule
-tabel met de naam van de uitsnijdtaak, custom_cron
.
U ziet ook hoe u desgewenst een uitsnijdgroep kunt maken, waarmee u aangepaste uitsnijdtaken kunt uitvoeren met andere instellingen dan de standaardinstellingen van Commerce-toepassingen.
In deze zelfstudie gaan we uit van het volgende:
- De Commerce-toepassing wordt geïnstalleerd in
/var/www/html/magento2
- De gebruikersnaam en het wachtwoord voor de Commerce-database zijn allebei
magento
- U voert alle acties als eigenaar van het dossiersysteemuit
Stap 1: Een voorbeeldmodule ophalen
Als u een aangepaste uitsnijdtaak wilt instellen, hebt u een voorbeeldmodule nodig. We raden de module magento-module-minimal
aan.
Als u reeds een steekproefmodule hebt, kunt u het gebruiken; sla deze stap en de volgende stap over en ga met Stap 3 verder: creeer een klasse om kroon in werking te stellen.
om een steekproefmodule te krijgen:
-
Login aan uw server van Commerce als, of schakelaar aan, de eigenaar van het dossiersysteem.
-
Ga naar een map die zich niet in de hoofdmap van de Commerce-toepassing bevindt (bijvoorbeeld de thuismap).
-
Kloont de
magento2-samples
bewaarplaats.code language-bash git clone git@github.com:magento/magento2-samples.git
Als het bevel met de fout
Permission denied (publickey).
ontbreekt, moet u uw openbare sleutel van SSH aan GitHub.comtoevoegen. -
Maak een map waarnaar de voorbeeldcode moet worden gekopieerd:
code language-bash mkdir -p /var/www/html/magento2/app/code/Magento/SampleMinimal
-
Kopieer de code van de voorbeeldmodule:
code language-bash cp -r ~/magento2-samples/sample-module-minimal/* /var/www/html/magento2/app/code/Magento/SampleMinimal
-
Controleer of de gekopieerde bestanden correct zijn gekopieerd:
code language-bash ls -al /var/www/html/magento2/app/code/Magento/SampleMinimal
U zou het volgende resultaat moeten zien:
code language-none drwxrwsr-x. 4 magento_user apache 4096 Oct 30 13:19 . drwxrwsr-x. 121 magento_user apache 4096 Oct 30 13:19 .. -rw-rw-r--. 1 magento_user apache 372 Oct 30 13:19 composer.json drwxrwsr-x. 2 magento_user apache 4096 Oct 30 13:19 etc -rw-rw-r--. 1 magento_user apache 10376 Oct 30 13:19 LICENSE_AFL.txt -rw-rw-r--. 1 magento_user apache 10364 Oct 30 13:19 LICENSE.txt -rw-rw-r--. 1 magento_user apache 1157 Oct 30 13:19 README.md -rw-rw-r--. 1 magento_user apache 270 Oct 30 13:19 registration.php drwxrwsr-x. 3 magento_user apache 4096 Oct 30 13:19 Test
-
De Commerce-database en -schema bijwerken:
code language-bash bin/magento setup:upgrade
-
De cache reinigen:
code language-bash bin/magento cache:clean
Stap 2: Verifieer de steekproefmodule
Controleer voordat u verdergaat of de voorbeeldmodule is geregistreerd en ingeschakeld.
-
Voer de volgende opdracht uit:
code language-bash bin/magento module:status Magento_SampleMinimal
-
Zorg ervoor dat de module wordt toegelaten.
code language-none Module is enabled
Module does not exist
, overzicht Stap 1zorgvuldig. Zorg ervoor dat de code in de juiste map staat. Spelling en hoofdletters/kleine letters zijn belangrijk. Als iets anders is, wordt de module niet geladen. Vergeet ook niet magento setup:upgrade
uit te voeren.Stap 3: Een klasse maken om afsnijden uit te voeren
In deze stap wordt een eenvoudige klasse weergegeven voor het maken van een uitsnijdtaak. De klasse schrijft alleen een rij naar de tabel cron_schedule
die bevestigt dat deze is ingesteld.
Een klasse maken:
-
Maak een map voor de klasse en wijzig deze in de map:
code language-bash mkdir /var/www/html/magento2/app/code/Magento/SampleMinimal/Cron && cd /var/www/html/magento2/app/code/Magento/SampleMinimal/Cron
-
Er is een bestand met de naam
Test.php
gemaakt in die map met de volgende inhoud:code language-php <?php namespace Magento\SampleMinimal\Cron; use Psr\Log\LoggerInterface; class Test { protected $logger; public function __construct(LoggerInterface $logger) { $this->logger = $logger; } /** * Write to system.log * * @return void */ public function execute() { $this->logger->info('Cron Works'); } }
Stap 4: Maken crontab.xml
Het bestand crontab.xml
stelt een schema in voor het uitvoeren van uw aangepaste uitsnijdcode.
Maak crontab.xml
als volgt in de map /var/www/html/magento2/app/code/Magento/SampleMinimal/etc
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="custom_cronjob" instance="Magento\SampleMinimal\Cron\Test" method="execute">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
De voorgaande crontab.xml
voert de Magento/SampleMinimal/Cron/Test.php
-klasse eenmaal per minuut uit, waardoor een rij wordt toegevoegd aan de cron_schedule
-tabel.
Om het bouwplan configureerbaar van Admin te maken, gebruik de configuratiepad van uw gebied van de systeemconfiguratie.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="custom_cronjob" instance="Magento\SampleMinimal\Cron\Test" method="execute">
<config_path>system/config/path</config_path>
</job>
</group>
</config>
Hierbij is system/config/path
een systeemconfiguratiepad dat is gedefinieerd in etc/adminhtml/system.xml
van een module.
Stap 5: Compileer en cache schoon
Compileer de code met deze opdracht:
bin/magento setup:di:compile
En maak de cache schoon met deze opdracht:
bin/magento cache:clean
Stap 6: De uitsnijdtaak verifiëren
In deze stap ziet u hoe u de aangepaste uitsnijdtaak kunt verifiëren met een SQL-query in de databasetabel cron_schedule
.
Uitsnijden verifiëren:
-
Uitvoeren van Commerce-taken voor uitsnijden:
code language-bash bin/magento cron:run
-
Voer de opdracht
magento cron:run
twee of drie keer in.De eerste keer dat u de opdracht invoert, worden de taken in de wachtrij geplaatst en daarna worden de uitsnijdtaken uitgevoerd. U moet het bevel minstens tweemaal ingaan.
-
Voer de SQL-query
SELECT * from cron_schedule WHERE job_code like '%custom%'
als volgt uit:-
Enter
mysql -u magento -p
-
Typ
use magento;
bij de aanwijzingmysql>
. -
Enter
SELECT * from cron_schedule WHERE job_code like '%custom%';
Het resultaat moet vergelijkbaar zijn met het volgende:
code language-none +-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+ | schedule_id | job_code | status | messages | created_at | scheduled_at | executed_at | finished_at | +-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+ | 3670 | custom_cronjob | success | NULL | 2016-11-02 09:38:03 | 2016-11-02 09:38:00 | 2016-11-02 09:39:03 | 2016-11-02 09:39:03 | | 3715 | custom_cronjob | success | NULL | 2016-11-02 09:53:03 | 2016-11-02 09:53:00 | 2016-11-02 09:54:04 | 2016-11-02 09:54:04 | | 3758 | custom_cronjob | success | NULL | 2016-11-02 10:09:03 | 2016-11-02 10:09:00 | 2016-11-02 10:10:03 | 2016-11-02 10:10:03 | | 3797 | custom_cronjob | success | NULL | 2016-11-02 10:24:03 | 2016-11-02 10:24:00 | 2016-11-02 10:25:03 | 2016-11-02 10:25:03 | +-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+
-
-
(Optioneel) Controleer of berichten naar het logboek van het Commerce-systeem worden geschreven:
code language-bash cat /var/www/html/magento2/var/log/system.log
U zou één of meerdere ingangen als het volgende moeten zien:
code language-none [2016-11-02 22:17:03] main.INFO: Cron Works [] []
Deze berichten zijn afkomstig van de methode
execute
inTest.php
:code language-php public function execute() { $this->logger->info('Cron Works');
Als de SQL-opdracht en het systeemlogboek geen items bevatten, voert u de opdracht magento cron:run
nog een paar keer uit en wacht u. Het kan enige tijd duren voordat de database wordt bijgewerkt.
Stap 7 (optioneel): Een aangepaste uitsnijdgroep instellen
In deze stap ziet u hoe u desgewenst een aangepaste uitsnijdgroep instelt. Stel een aangepaste uitsnijdgroep in als u wilt dat de aangepaste uitsnijdtaak volgens een andere planning wordt uitgevoerd dan andere uitsnijdtaken (doorgaans één keer per minuut) of als u meerdere aangepaste uitsnijdtaken met verschillende instellingen wilt uitvoeren.
Een aangepaste uitsnijdgroep instellen:
-
Open
crontab.xml
in een teksteditor. -
<group id="default">
wijzigen in<group id="custom_crongroup">
-
Sluit de teksteditor.
-
Maak
/var/www/html/magento2/app/code/Magento/SampleMinimal/etc/cron_groups.xml
met de volgende inhoud:code language-xml <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd"> <group id="custom_crongroup"> <schedule_generate_every>1</schedule_generate_every> <schedule_ahead_for>4</schedule_ahead_for> <schedule_lifetime>2</schedule_lifetime> <history_cleanup_every>10</history_cleanup_every> <history_success_lifetime>60</history_success_lifetime> <history_failure_lifetime>600</history_failure_lifetime> <use_separate_process>1</use_separate_process> </group> </config>
Voor een beschrijving van wat de opties betekenen, zie Aanpassen van de krantenverwijzing.
Stap 8: De aangepaste uitsnijdgroep verifiëren
Deze facultatieve stap toont hoe te om uw groep van de douanecurn te verifiëren gebruikend Admin.
De aangepaste uitsnijdgroep verifiëren:
-
Commerce-taken voor uitsnijden uitvoeren voor uw aangepaste groep:
code language-bash php /var/www/html/magento2/bin/magento cron:run --group="custom_crongroup"
Voer de opdracht ten minste tweemaal uit.
-
De cache reinigen:
code language-bash php /var/www/html/magento2/bin/magento cache:clean
-
Meld u als beheerder aan bij de beheerder.
-
Klik Slaat op > Montages > Configuratie > Geavanceerd > Systeem.
-
In de juiste ruit, breid Uitsnede uit.
Uw uitsnijdgroep wordt als volgt weergegeven: