Bu isteği SQL tarafında çözmen gerekiyor buna örnek olarak;
$order = $_REQUEST['status'] ? 'DESC' : 'ASC';
Payments::orderBy('status', $order)->get();
Verdiğin cevaptan anladığım kadarıyla veritabanı tarafında optimizasyon sorunu yaşıyorsun.
Bunun çözümü şu şekilde olabilir.
Eğer sunucu taraflı bir çalışmaysa yapacağın işi böldürtebilirsin bu da şu şekilde olabilir.
<?php
$last_line_number = file_get_contents('last_line.txt') ?? 0;
for($x = $last_line_number; $x < count($xml); $x++) {
$data = $xml[$x];
// işlemler
$last_line_number++;
if($last_line_number % 1000 == 0){
file_put_contents('last_line.txt', $last_line_number);
break;
}
}
Ayrıca MySQL tarafı için de bir kaç tüyo verebilirim, INSERT işlemleri ne kadar fazla olursa olsun hızlı çalışacaktır fakat UPDATE sorguları aynı şekilde çalışmaz.
Optimize çalıştırmak istiyorsak
UPDATE table SET column = "new_data" WHERE column = 1 (YANLIŞ)
UPDATE table SET column = "new_data" WHERE column = 1 LIMIT 1 (DOĞRU)
Eklemiş olduğumuz LIMIT 1 ibaresi sadece 1 satırı güncelleyeceğini daha fazla derine inmemesini sağlar, ve böylece tek bir satırı güncelledikten sonra sorguyu sonlandırır.
Haricinde tekrar yapabileceğimiz tek bir şey daha var.
UPDATE table SET column = "new_data" WHERE column = 1 LIMIT 1
UPDATE table SET column = "new_data" WHERE column = 2 LIMIT 1
gibi tek tek sorguları atmaktansa 3 er 3 er şeklinde tek seferde de atabiliriz
UPDATE table SET column = "new_data" WHERE column = 1 LIMIT 1;
UPDATE table SET column = "new_data" WHERE column = 2 LIMIT 1;
UPDATE table SET column = "new_data" WHERE column = 3 LIMIT 1
Bu da bize her update attığımızda tek tek sorgu isteğinde bulunmadan tek seferde 3 sorguyu göndererek sıra sıra bu işlemleri yapması gerektiğini anlatmamızdır.
Tabi bu 3 ten fazla da olabilir ben sadece örnek verdim.
gibi
CORS kullanman yeterli gibi görünüyor aslında.
Windows içerisinde Task Scheduler yani Görev Zamanlayıcısı uygulamasını araştırmanızı tavsiye ederim. orada daha login ekranında şifreyi girmeden bile uygulamayı çalıştırtabiliyorsunuz.
Django üzerinde size sunulmayan, fakat laravel içerisinde size sunulan bir dünya özellik ve ekosistem mevcut olmasından dolayı da olabilir.
Buna sadece değişim korkusu diyerek bakamayız, demek istediğim aralarındaki farkı güzel bir şekilde araştırırsanız net bir şekilde cevaba ulaşacağınıza eminim.
Merhaba, sorun hala devam ediyor ise discorddan bana ulaşabilirsin. @_database
İlk önce mysqli modülünü kullanmanı önermem, PDO ile örnek göstereceğim.
$db = new PDO(...);
if(count($_POST)) {
// pdo olduğu için artık trimlemeye veya strip_tags atmaya gerek yok.
$kullanici_adi_giris = $_POST['kullanici_adi'];
$kullanici_sifresi_giris = $_POST['kullanici_sifresi_giris'];
$login = $db->prepare('SELECT id FROM kullanicilar WHERE kullanicilar_kullaniciadi = :kullanici_adi AND kullanicilar_sifre = :sifre');
$login->execute(['kullanici_adi' => $kullanici_adi_giris, 'sifre' => $kullanici_sifresi_giris]);
$user = $login->fetch(PDO::FETCH_ASSOC);
if(!isset($user['id'])) die('Giriş başarısız.');
$_SESSION["user"] = $user['id'];
echo "Giriş başarılı.";
}
Ayrıca giriş sayfasının aksiyon sayfasını ayırmanı tavsiye ederim.
Yani bunun en sağlıklı hali recursive gibi görünüyor ama.
$db = new PDO(...);
function menu($parent_id = 0) {
global $db;
$menuler = $db->query("SELECT id, baslik FROM menuler WHERE parent_id = $parent_id")->fetchAll(PDO::FETCH_ASSOC);
foreach($menuler as $menu):
?>
<div>
<?= $menu['baslik'] ?>
<div><?= menu($menu['id']) ?></div>
</div>
<?php
endforeach;
}
<div>
Menu
<?= menu() ?>
</div>
gibi.
Merhaba, FileReader kullanıyorsunuz fakat bunun için ilk önce bir input'a bu resimi koymuş olmanız gerekiyor, yani demek istediğim.
const reader = new FileReader();
input.onchange = function() {
'filereader işlemleri....
// ve dosyaya
let form_data = new FormData();
form_data.add('image', this.files[0]);
// şeklinde de ulaşabiliriz illa base64 şeklinde kayıt etmemize gerek yok.
}
illa da base64 şeklinde atıp dosya olarak kayıt etmek istiyorsakta;
https://stackoverflow.com/a/17811089/12637558
yanıtı bize sonucu verecektir.