PHP ile Otomasyon Sistemleri Nasıl Kurulur?

PHP ile Otomasyon Sistemleri Nasıl Kurulur?

admin
12 dk okuma
0 Yorum

PHP, web dünyasında en çok kullanılan programlama dillerinden biri. Çoğu kişi onu dinamik web siteleri ve içerik yönetim sistemleriyle ilişkilendirir. Ancak PHP’nin yetenekleri bununla sınırlı değil. Sunucu taraflı çalışan bu dil, doğru araçlarla birleştiğinde güçlü otomasyon sistemleri kurmak için de birebir.

Bu yazıda PHP ile otomasyon sistemlerinin nasıl kurulacağını adım adım ele alacağız. Komut satırından cron job’lara, veritabanı işlemlerinden e-posta gönderimine kadar uçtan uca bir bakış sunacağız. Amacımız, size sadece teorik bilgi vermek değil, kendi projelerinizde hemen kullanabileceğiniz pratik bir yol haritası çizmek.

PHP Otomasyon Sistemleri Nedir ve Neden Kullanılır?

Otomasyon, tekrarlayan işleri insan müdahalesi olmadan gerçekleştirme sürecidir. PHP ile otomasyon sistemleri, dosya işleme, veritabanı yedekleme, e-posta gönderme, veri çekme ve API entegrasyonları gibi görevleri otomatikleştirmek için yazılan betiklerdir.

Bu sistemlerin en büyük avantajı, zamandan tasarruf sağlaması ve hata payını azaltmasıdır. Manuel olarak yapılan bir işlem, unutulabilir veya yanlış yapılabilir. Oysa bir kez doğru şekilde yapılandırılmış bir otomasyon betiği, her seferinde aynı doğrulukla çalışır.

İhtiyaç duyabileceğiniz bazı örnek senaryolar:

  • Her gece veritabanınızın yedeğini almak
  • Stok seviyesi düşen ürünler için tedarikçiye otomatik e-posta göndermek
  • Bir API’den düzenli olarak veri çekip kendi veritabanınıza işlemek
  • Kullanıcıların yüklediği görselleri otomatik olarak yeniden boyutlandırmak
  • Blog yazılarınızı sosyal medyada otomatik paylaşmak

PHP ile Otomasyon İçin Gerekli Araçlar ve Ortam

PHP otomasyon sistemleri kurmaya başlamadan önce doğru araçlara sahip olduğunuzdan emin olmalısınız. İşte temel ihtiyaçlarınız:

PHP CLI (Komut Satırı Arayüzü)

PHP betiklerini web sunucusu olmadan da çalıştırabilirsiniz. PHP CLI, komut satırından PHP kodunu çalıştırmanıza olanak tanır. Çoğu Linux dağıtımında PHP kurulduğunda CLI otomatik olarak gelir. Kontrol etmek için terminalde şu komutu kullanabilirsiniz:

php -v

Bu komut PHP sürümünüzü gösterir. Eğer bir hata alıyorsanız, PHP’yi kurmanız gerekebilir.

Composer: Bağımlılık Yönetimi

Otomasyon projelerinde genellikle hazır kütüphaneler kullanırsınız. Composer, PHP için en popüler bağımlılık yöneticisidir. Projenizin kök dizininde composer.json dosyası oluşturarak ihtiyacınız olan paketleri tanımlayabilir ve composer install komutuyla bunları kurabilirsiniz.

Cron Job Nedir ve Nerede Kullanılır?

Cron, Unix benzeri işletim sistemlerinde zamanlanmış görevleri çalıştırmak için kullanılan bir zamanlayıcıdır. PHP betiklerinizi belirli zamanlarda çalıştırmak için cron job tanımlayabilirsiniz. Örneğin, her gece saat 03:00’te yedekleme betiğinizi çalıştırmak istiyorsanız crontab’a şu satırı eklersiniz:

0 3 * * * /usr/bin/php /home/kullanici/backup.php

Bu satırda /usr/bin/php PHP yürütülebilir dosyasının yolunu, /home/kullanici/backup.php ise çalıştırmak istediğiniz betiğin yolunu gösterir.

PHP ile Otomasyon Sistemleri Nasıl Kurulur? Adım Adım

Şimdi sıra geldi asıl konuya. Aşağıda, PHP ile otomasyon sistemleri kurmanın temel adımlarını detaylı olarak açıklıyorum.

1. Proje Yapısını Belirleyin

Otomasyon betikleriniz için ayrı bir dizin oluşturmak iyi bir alışkanlıktır. Böylece web sitenizin kök dizininden bağımsız, güvenli bir şekilde çalışırlar. Örneğin:

~/automation/backup.php
~/automation/send-emails.php
~/automation/lib/

Bu yapı, betiklerinizi organize etmenizi kolaylaştırır ve gelecekte bakım yapmanızı sağlar.

2. Hangi PHP Sürümünü Kullanacağınıza Karar Verin

Modern PHP sürümleri (8.0 ve üzeri) daha hızlı ve güvenlidir. Eski sürümlerde kalan kodlarınız varsa, uyumluluğu kontrol etmeniz gerekebilir. Ayrıca, bazı paketler belirli PHP sürümlerini gerektirir. Composer ile bu bağımlılıkları yönetebilirsiniz.

3. Otomasyon Betiğinizi Yazmaya Başlayın

İlk betiğiniz basit bir örnek olsun: bir metin dosyasına tarih ve saat yazan bir betik. Aşağıdaki logger.php dosyasını oluşturun:

<?php
file_put_contents('log.txt', date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);

Bu betik çalıştırıldığında log.txt dosyasına her seferinde yeni bir satır ekler. Test etmek için terminalde şunu çalıştırın:

php logger.php

Dosyayı açtığınızda kaydın eklendiğini göreceksiniz.

4. Betiğinizi Cron ile Zamanlayın

Şimdi bu betiği her dakika çalışacak şekilde cron’a ekleyelim. Crontab dosyasını düzenlemek için:

crontab -e

Dosyaya aşağıdaki satırı ekleyin:

* * * * * /usr/bin/php /home/kullanici/logger.php

Kaydedip çıktıktan sonra bir dakika bekleyin ve log.txt dosyasına bakın. Her dakika yeni bir satır eklenmiş olmalı.

PHP Otomasyon İçin Pratik Örnekler

Teori yeterli. Şimdi gerçek hayattan senaryolarla PHP otomasyon sistemlerinin nasıl çalıştığını görelim.

Veritabanı Yedekleme Betiği

Veritabanı yedeklemek, her sistem için kritik bir görevdir. Aşağıdaki PHP betiği MySQL veritabanınızı yedekleyip bir dosyaya kaydeder:

<?php
$host = 'localhost';
$user = 'root';
$pass = 'sifre';
$db = 'veritabani';
$backupFile = 'backup_' . date('Ymd_His') . '.sql';
$command = "mysqldump -h $host -u $user -p$pass $db > $backupFile";
system($command);
echo "Yedek oluşturuldu: $backupFile
";

Bu betiği cron’a ekleyerek her gece otomatik yedek alabilirsiniz. Dikkat etmeniz gereken bir nokta: şifreyi betik içine gömmek güvenlik riski oluşturabilir. Bunun yerine çevresel değişkenler veya yapılandırma dosyaları kullanmayı tercih edin.

E-posta Gönderme Betiği

Bir e-ticaret sitesinde, sepette bekleyen kullanıcılara hatırlatma e-postası göndermek istediğinizi düşünün. PHPMailer gibi bir kütüphane kullanarak bu işlemi otomatikleştirebilirsiniz. Önce Composer ile PHPMailer’ı kurun:

composer require phpmailer/phpmailer

Ardından aşağıdaki gibi bir betik yazabilirsiniz:

<?php
require 'vendor/autoload.php';
use PHPMailerPHPMailerPHPMailer;

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'kullanici';
$mail->Password = 'sifre';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->setFrom('noreply@example.com', 'Otomasyon');
$mail->addAddress('musteri@example.com', 'Müşteri');
$mail->Subject = 'Sepet Hatırlatması';
$mail->Body = 'Merhaba, sepetinizde ürünleriniz bekliyor.';

if ($mail->send()) {
    echo 'E-posta gönderildi.';
} else {
    echo 'Hata: ' . $mail->ErrorInfo;
}

Bu betiği, veritabanındaki kullanıcı bilgileriyle birleştirerek döngü içinde çalıştırabilirsiniz.

API’den Veri Çekme ve İşleme

Diyelim ki hava durumu verilerini bir API’den alıp kendi veritabanınıza kaydetmek istiyorsunuz. PHP’nin file_get_contents veya cURL fonksiyonlarını kullanabilirsiniz. Basit bir örnek:

<?php
$apiUrl = 'https://api.example.com/weather?city=Istanbul';
$response = file_get_contents($apiUrl);
$data = json_decode($response, true);

if ($data !== null) {
    $temp = $data['main']['temp'];
    // Veritabanına kaydet
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'kullanici', 'sifre');
    $stmt = $pdo->prepare('INSERT INTO weather (city, temp) VALUES (?, ?)');
    $stmt->execute(['Istanbul', $temp]);
    echo "Hava durumu kaydedildi: {$temp}°C
";
} else {
    echo "API'den veri alınamadı.
";
}

Bu şekilde düzenli olarak hava durumu verilerini toplayabilirsiniz.

PHP Otomasyon Sistemlerinde Sık Yapılan Hatalar

Otomasyon betikleri yazarken karşılaşılan bazı yaygın hatalar vardır. Bunları bilmek, baştan doğru çözümler üretmenizi sağlar.

Yol Hataları

Cron job’lar çalışırken, betiğin bulunduğu dizini farklı şekilde görebilir. Bu yüzden betik içinde __DIR__ sabitini kullanmak önemlidir. Örneğin:

require __DIR__ . '/vendor/autoload.php';

Bu, bağımlılıkların doğru yüklenmesini sağlar.

Çıktı ve Hata Yönetimi

Cron job’lar genellikle çıktıyı e-posta ile gönderir veya bir log dosyasına yazar. Hataları görmezden gelmek yerine, betiğinizin hata mesajlarını kaydetmesini sağlayın. Basitçe error_log fonksiyonunu kullanabilirsiniz:

try {
    // işlemler
} catch (Exception $e) {
    error_log($e->getMessage());
}

Zaman Aşımı Sorunları

Özellikle büyük veri işlemlerinde betik uzun sürebilir. PHP’nin varsayılan zaman aşımı 30 saniyedir. Komut satırından çalışan betikler için bu süre genellikle max_execution_time ayarına bağlıdır. Betiğinizin başında şu satırı ekleyerek süreyi uzatabilirsiniz:

set_time_limit(0);

Ancak dikkatli olun: sonsuz döngülere yol açabilir.

Dosya İzinleri

Betiğinizin yazma yapacağı dosyaların izinleri doğru olmalıdır. Aksi takdirde “Permission denied” hatası alırsınız. Dosya izinlerini chmod ile ayarlayabilirsiniz.

PHP Otomasyon Sistemlerinde Güvenlik İpuçları

Otomasyon betikleri hassas işlemler yapabilir. Bu yüzden güvenlik önlemlerini ihmal etmeyin.

  • Şifreleri ve API anahtarlarını betik dosyalarında saklamayın. Bunun yerine çevresel değişkenler veya .env dosyaları kullanın. Örneğin:
putenv($key = getenv('DB_PASSWORD'));
  • Betiklerinizi web kök dizininden uzak tutun. Eğer web sunucunuzda çalıştırıyorsanız, doğrudan erişime açık olmamalıdır. Bunun için .htaccess dosyasıyla koruma sağlayabilirsiniz.
  • Dışarıdan veri alırken doğrulama yapın. API’den gelen verileri güvenli kabul etmeyin, gerekli filtreleri uygulayın.
  • Log dosyalarına hassas bilgileri yazmayın. Şifre, token gibi verileri loglamaktan kaçının.

PHP Otomasyon Sistemleri İçin Alternatif Yaklaşımlar

Her otomasyon ihtiyacı için PHP şart değildir. Bazen diğer diller veya araçlar daha uygun olabilir. Ancak PHP’nin avantajlarını da bilmekte fayda var.

PHP vs. Python

Python, özellikle veri bilimi ve makine öğrenmesi alanlarında güçlüdür. Ancak PHP, web teknolojileriyle olan entegrasyonu sayesinde, web sitenizin altyapısıyla aynı dili kullanmak istiyorsanız avantaj sağlar. Eğer ekibiniz PHP’ye hâkimse, öğrenme maliyeti düşük olur.

Kriter PHP Python
Web entegrasyonu Mükemmel İyi
Komut satırı kullanımı İyi Mükemmel
Kütüphane çeşitliliği Geniş Çok geniş
Öğrenme eğrisi Düşük Orta
Performans Yeterli Benzer

Bu tablo, karar vermenize yardımcı olabilir.

Gearman gibi İş Kuyruğu Sistemleri

Eğer işlemleriniz uzun sürüyorsa ve paralel çalıştırmanız gerekiyorsa, iş kuyruğu sistemleri kullanabilirsiniz. Gearman, PHP ile uyumlu bir iş kuyruğu sunar. Ancak bu, daha karmaşık bir altyapı gerektirir.

PHP Otomasyon Sistemlerinde Performansı Artırma

Otomasyon betikleri bazen yoğun kaynak tüketebilir. İşte performansı artırmak için birkaç öneri:

Veritabanı Bağlantılarını Yönetin

Her döngüde yeni bir veritabanı bağlantısı açmak yerine, bağlantıyı bir kez oluşturup tüm işlemlerde kullanın. PDO ile kalıcı bağlantılar oluşturabilirsiniz:

$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass, [
    PDO::ATTR_PERSISTENT => true
]);

Toplu İşlemler Yapın

Binlerce kayıt ekleyecekseniz, tek tek INSERT yerine toplu insert kullanın. PDO ile prepared statement’ları bir kez hazırlayıp döngüde kullanmak hem güvenli hem de hızlıdır.

Gereksiz Çıktıları Önleyin

Eğer betiğinizin çıktısını kimse görmeyecekse, echo ile çıktı üretmek yerine log dosyasına yazmak daha verimlidir. Çıktı üretmek bellek kullanımını artırır.

Sıkça Sorulan Sorular

PHP otomasyon betikleri web siteme zarar verir mi?

Hayır, doğru yazıldığında ve güvenlik önlemleri alındığında zarar vermez. Ancak dikkatli olmazsanız, örneğin sonsuz döngüye girerse sunucu kaynaklarını tüketebilir.

Cron job çalışmıyor, ne yapmalıyım?

Cron job’ınız çalışmıyorsa şu adımları izleyin:

  • PHP’nin doğru yolu kullandığından emin olun.
  • Betiğinizin çalıştırılabilir izinlerinin olduğunu kontrol edin.
  • Cron çıktısını bir dosyaya yönlendirerek hata mesajlarını görün: php betik.php >> /tmp/cron.log 2>&1
  • Cron satırınızın doğru olduğunu test edin.

Windows’ta PHP otomasyonu nasıl yapılır?

Windows’ta Görev Zamanlayıcı kullanarak PHP betiklerini zamanlayabilirsiniz. PHP’nin PATH’e eklendiğinden emin olun. Benzer şekilde, betiği çalıştıracak bir komut satırı görevi oluşturun.

PHP Otomasyon Sistemleri Kurarken Dikkat Edilmesi Gerekenler

İlk otomasyon sisteminizi kurarken aklınızda bulunsun:

  • Küçük başlayın: İlk denemenizde basit bir görevle başlayın. Örneğin, bir dosyaya log yazan betik. Bu, sistemin nasıl çalıştığını anlamanızı sağlar.
  • Test ortamı kullanın: Canlı sunucuda denemeler yapmak riskli olabilir. Önce yerel ortamda veya bir test sunucusunda deneyin.
  • Dokümantasyon oluşturun: Yazdığınız betiklerin nasıl çalıştığını bir not dosyasına yazın. İleride sizin veya başka birinin işine yarar.

Sonraki Adımlar: Kendi Sisteminizi Kurmaya Başlayın

Artık PHP ile otomasyon sistemlerinin temellerini öğrendiniz. Sıra, kendi ihtiyaçlarınıza yönelik bir betik yazmaya geldi. Aşağıdaki kontrol listesini kullanarak başlayabilirsiniz:

  • İhtiyacınız olan görevi netleştirin.
  • PHP CLI ve gerekli kütüphaneleri kurun.
  • Betiklerinizi barındıracak bir dizin oluşturun.
  • Betik kodunu yazın ve yerel olarak test edin.
  • Güvenlik kontrollerini yapın.
  • Cron job’ınızı ayarlayın.
  • Çıktıları ve hataları izleyin.

Unutmayın, otomasyonun amacı işlerinizi kolaylaştırmaktır. Başlangıçta hafif bir öğrenme eğrisi olsa da, uzun vadede size çok şey kazandıracaktır. Şimdiden kolay gelsin!

Yorum Yap