Hallo, verwende folgenden Code, um über die Klassen Task und Taskhander einen einfachen Schreibprozess in eine Textdatei demomäßig anzustoßen. Es funktioniert aber nicht. Die Textfile wird nicht geschrieben. Ziel ist es, eine Controller Methode des Plugins anzustoßen. Wenn aber schon der Schreibprozess in der run() nicht funktioniert…Hier der Code:
<?php declare(strict_types=1);
namespace WtProductImport\Service\ScheduledTask;
use Shopware\Core\Framework\MessageQueue\ScheduledTask\ScheduledTask;
class ImportTask extends ScheduledTask
{
public static function getTaskName(): string
{
return 'swag.example_task';
}
public static function getDefaultInterval(): int
{
return 300; // 5 minutes
}
}
<?php declare(strict_types=1);
namespace WtProductImport\Service\ScheduledTask;
use Shopware\Core\Framework\MessageQueue\ScheduledTask\ScheduledTaskHandler;
use WtProductImport\Storefront\Controller\ProductImportController;
#[AsMessageHandler(handles: ImportTask::class)]
class ImportTaskHandler extends ScheduledTaskHandler
{
private $productImportController;
public function __construct(ProductImportController $productImportController)
{
$this->productImportController=$productImportController;
}
public function run(): void
{
$path=dirname(getcwd()) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'jwt' . DIRECTORY_SEPARATOR . 'test12_tr.txt';
file_put_contents($path,"1234");
}
static public function getHandledMessages(): iterable {
return [ImportTask::class];
}
}
Vielleicht ein Hilfsmittel: Ich habe mir zum Test unter run() eine Mail-Funktion gepackt. Wenn ich eine Mail bekomme, weiß ich zumindest das der Task funktioniert.
Bei der Datei könnten ggf. Rechte noch eine Rolle spielen oder Ordner/Pfad passt nicht.
Rechte spielen unter XAMPP keine Rolle, und der Pfad stimmt. Es ist der Pfad zum Verzeichnis {root_dir}/config\jwt
Und Mails werden unter XAMPP standardmäßig nicht verschickt, ist ja nur der localhost…
Wenn ich mich recht erinnere, habe ich in der Entwickler-Dokumentation gelesen, dass Shopware unter XAMPP nicht läuft. Zumindest nicht ohne manuelle Eingriffe in die Konfiguration.
Daher ist das hier sehr wahrscheinlich kein „Shopware Problem“, sondern ein „Notwendige Anpassungen fehlen, damit Shopware auf einer nicht dafür konzipierten Plattform läuft Problem“.
Nur das so am Rande, falls andere den Fehler nicht reproduzieren können.