Basit bir veritabanı işlemi yapıp tekrar header ile yönlendirme yapan bir PHP web sayfası tasarladım. Bu veritabanı işlemi çok kısa sürüyor ve sayfa tekrar yönlendiriliyor fakat bu işlem gerçekleştiğinde mail atmak gibi başka bir işlem yapmak istersem bu mail atmak uzun sürüyor. Mail gönderme işini (yada uzun sürecek başka bir işi) masaüstü programcılıkta Thread yapısı gibi web sitesini durdurmadan gerçekleştirmek istiyorum, ne yapabilirim? Web sitesi geliştirirken server'a arka planda iş yapmasını nasıl söyleyebilirim?

soruldu: 28 Eyl '12, 07:18

numankaraaslan's gravatar image

numankaraaslan
1.8k253749
cevap kabul oranı: 19%

değiştirildi: 28 Eyl '12, 07:18

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Yapmak istedigin islemleri veritabanina kaydedebilirsin. Düzenli araliklarla cronjob araciligi bu islemleri uygulamaya asenkron olarak kosturabilirsin. Böylece senkron olan kullanici islemleri ile, asenkron kosturulmasi gereken islemleri birbirinden ayirt ederek, kullanici interaksiyonunu hizlandirabilirsin.

permanent link

cevaplandı: 28 Eyl '12, 07:39

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

öneri için çok teşekkürler ama cronjob gibi konulara girmeden bu iş mümkün olamaz mı? yani hayal ediyorum sadece, mesela php sayfası oluşturulurken bir kod bloğu yada fonksiyon sadece mail atma işlemini gerçekleştirecek geri kalan kodlar sayfanın oluşturulup client'a gönderilmesini sağlayacak. Yada şimdi aklıma gelen belki server üzerine bir exe çalıştırılabilir o exe çalışırken yani mail gönderirken kullanıcı işlerine devam eder. mümkün oldukça php den dışarı çıkmamayı ve sisteme ek özellikler katmadan yapmayı istiyorum.

(28 Eyl '12, 08:27) numankaraaslan numankaraaslan's gravatar image
1

Ya da sayfa normal çalışmasına devam eder yönlenirme yapılır ve bir ajax çağrısı ile kullanıcı farketmeden gönderilebilir mi?

(28 Eyl '12, 08:28) numankaraaslan numankaraaslan's gravatar image

Eğer, arka planda yapmak istediğin işler süreçleri etkiliyor ve vakit alıyorsa, o zaman bir Work Que kullanmanı tavsiye ederim. Bu konuda ücretsiz Beanstalkd daemonundan faydalanabilirsin ki PHP modülü de mevcut. Şu linki de incelemeni tavsiye ederim Beanstalkd Seminer

permanent link

cevaplandı: 29 May '13, 15:16

O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Oğuz Çelikdemir
2.0k52234
cevap kabul oranı: 13%

değiştirildi: 29 May '13, 16:11

Bunu system(), exec() fonksiyonlarından biriyle yapabilirsin. Ama tabiki bu fonksiyonları kullanma iznin olmalı. Mesela şu şekilde:

system("/usr/bin/php /var/www/mysite.com/mailgonder.php?to=bilmemne@gmail.com&subject=baslik&message=mesaj");

Tabiki php-cli paketi kurulmuş olmalı ve php'nin yolunu doğru vermelisin. Genelde /usr/bin/php dizininde olur. Daha detaylı bilgi için: http://php.net/manual/en/features.commandline.php

Yada curl fonksiyonları ile kendi private php dosyana istek gönderirsin. Mesela mail atan dosya:

//mailgonder.php
//tabiki kendi mail dosyan daha gelişmiştir
mail ( $_GET["to"] , $_GET["subject"] , $_GET["message"] );

Sonra mesela index.php dosyanda şu:

//index.php
//kodların buraya yazdın diyelim

$curl_handler = curl_init();
//cevap için 1 saniye bekle
curl_setopt( $curl_handler , CURLOPT_TIMEOUT, 1);
curl_setopt($curl_handler, CURLOPT_URL, "http://www.benimsitem.com/mailgonder.php?to=bilmemne@gmail.com&subject=baslik&message=mesaj");
curl_exec($curl_handler);
curl_close($curl_handler);
//istek gönderildi ve en fazla 1 saniye beklemiş oldun

Tabiki o mailgonder.php dosyanın dışarıdan kimse tarafından bilinmiyor olması gerekiyor. O gizliliği de kendin bir şekilde çözmelisin.

permanent link

cevaplandı: 09 May '13, 11:32

kodmanyagha's gravatar image

kodmanyagha
3.1k132852
cevap kabul oranı: 15%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×168

Soruldu: 28 Eyl '12, 07:18

Görüntüleme: 1,839 kez

Son güncelleme: 29 May '13, 16:11

powered by BitNami OSQA