Artisan Komutlarını Çoklu Kiracılarda Çalıştırma: tenants:run Rehberi
<p>Bir <a href="https://tenancyforlaravel.com/" target="_blank" rel="noopener noreferrer">stancl/tenancy</a> paketini kullanan çoklu kiracılı bir Laravel uygulaması geliştiriyorsanız, bir gün her kiracı için bir Artisan komutunu aynı anda çalıştırmanız gerekecek. Veritabanlarını migrate etmek, önbellekleri temizlemek veya bir raporu yeniden oluşturmak gibi işlemleri her kiracı için ayrı ayrı çalıştırmanız gerekebilir. Ancak, <code>php artisan migrate</code> komutu sadece merkezi veritabanınıza etki eder ve her kiracı geride kalır.</p>
<p>Birçok geliştirici bir <code>tenants:artisan</code> komutu arayışına girer, ancak bu komut mevcut değildir. Asıl aradığınız komut <code>tenants:run</code>’dur ve bu, kayıtlı herhangi bir Artisan komutunu her kiracının bağlamında sarmalar. Bu rehber, <code>tenants:run</code> komutunu, kiracı bağlantılarına özel komutları, programatik API’yi ve birkaç kiracıdan sonra karşınıza çıkabilecek sorunları ele alacaktır.</p>
<blockquote>
<p><strong>Önemli Noktalar:</strong></p>
<ul>
<li>Genel komut <code>tenants:run {commandname}</code> şeklindedir — <code>tenants:artisan</code> değil.</li>
<li>Belirli kiracıları hedeflemek için <code>--tenants=ID</code> kullanın (birden fazla kiracı için bayrağı tekrar edin). Bunu atlayarak tüm kiracılara ulaşabilirsiniz.</li>
<li>Argüman ve seçeneklerinizi <code>--argument="key=value"</code> ve <code>--option="key=value"</code> ile iletin.</li>
<li>Migrate, seed ve rollback işlemleri için özel komutları kullanın: <code>tenants:migrate</code>, <code>tenants:seed</code>, <code>tenants:rollback</code>.</li>
<li>Kiracılar ardışık olarak çalıştırılır. Birkaç yüze geçtiğinizde, her kiracı için bir iş kuyruğu oluşturmaya geçin.</li>
</ul>
</blockquote>
<h2>tenants:run Komutu Gerçekten Ne Yapar?</h2>
<p><code>tenants:run</code> komutu, kiracıların üzerinden geçer ve her biri için kiracılığı başlatır, ardından adını verdiğiniz komutu çalıştırır, sonra kiracılığı sonlandırır. Kiracılığı başlatmak, bu kiracıya ait veritabanı bağlantısını, önbellek ekini ve dosya sistemi yollarını paket içindeki başlatıcılar aracılığıyla değiştirir — böylece sarmalanmış komut bir kiracı isteği içinde nasıl davranıyorsa o şekilde çalışır.</p>
<p>İşte paketin kaynağından gelen imza:</p>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code>php artisan tenants:run {commandname}
{--tenants=ID}
{--argument=key=value}
{--option=key=value}<h2>Belirli Kiracıları Hedeflemek İçin Ne Yapmalıyım?</h2>
<p><code>--tenants</code> seçeneğini kullanarak her kiracı ID'si için bir kez tekrar edin. Bunu atlarsanız, komut <em>tüm</em> kiracılar için çalıştırılır — bu, önbellek temizlemede işe yarar ancak yıkıcı bir işlemde gerçekten tehlikeli olabilir.</p>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code># Bir kiracıphp artisan tenants:run cache:clear –tenants=acme
Birden fazla kiracı (bayrağı tekrar edin)
php artisan tenants:run cache:clear –tenants=acme –tenants=globex
Tüm kiracılar (veya bayrağı atlayarak varsayılan)
php artisan tenants:run cache:clear


