WordPress Muncul Error 504 Gateway Time-Out

Mungkin buat kamu yang fokus di konten jarang memperhatikan hal ini, tapi jika kamu adalah seorang yang mengerti dan paham masalah theme, plugin dan sedikit mengerti server/hosting maka bisa saja menemukan hal ini.

Pastinya untuk Developer WordPress akan sering menemui ini ketika membuat fungsi atau kodingan yang terasa berat di hosting atau bahkan server.

Error 504 Gateway Time-out adalah waktu proses yang terlalu lama. Waktu proses ini tergantung pengaturan max execute time di PHP.
Berikut pesan error yang banyak ditemui :

  • “504 Gateway Timeout”
  • “504 Gateway Time-Out”
  • “504 Gateway Timeout NGINX”
  • “Nginx 504 Gateway Timeout”
  • “HTTP 504 Gateway Timeout”
  • “HTTP 504 Error”
  • “HTTP 504”
  • “Gateway Timeout (504)”

Biasanya waktu proses lebih dari 30 detik (default value).

Error diatas akan adalah contoh ketika proses ajax terlalu lama maka akan muncul di console log browser : POST https://example.net/wp-admin/admin-ajax.php 504 ()

 
Dan gambar diatas contoh 504 Gateway Time-out nginx di browser ketika menggunakan proses php biasa.

Mengatasi masalah 504 Gateway Time-out

Cara Pertama : Mengganti konfigrurasi max_execution_time, request_terminate_timeout, fastcgi_read_timeout

nano /etc/php5/fpm/php.ini
max_execution_time = 300
nano /etc/php5/fpm/pool.d/www.conf
request_terminate_timeout = 300
nano /etc/nginx/nginx.conf
http {
#...
fastcgi_read_timeout 300;
#...
}
And in your config:
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_read_timeout 300;
}
And reload services
service php5-fpm reload
service nginx reload

Cara Kedua : Jika kamu Developer, Perbaikin code untuk memperingan proses php (Agar proses tidak melebihi 30 detik).

Terima kasih sudah membaca jika ada yang mau ditanyakan silahkan komentar atau butuh bantuan atau kerjaan tentang Programming bisa kontak saya di halaman kontak.
 

RunCloud alternatif ServerPilot Murah Meriah !! Tapi …

Jika sobat kentos terbiasa menggunakan VPS / Server dan tidak mau repot menggunakan terminal untuk mengelola website. Tentu tidak asing dengan salah satu Control Panel satu ini, yaitu ServerPilot. Server Pilot memang control panel favorit para pengguna WordPress tentunya. Karena mudah dan stabil tidak sedikit yang menggunakannya dan tentu ada sedikit yang kurang kentos sukai disini.
Apa itu? yaitu biaya. ServerPilot mebebankan $10/bulan/server. Nah kalo punya banyak server tekor juga…
Tetapi tanpa disengaja kentos menemukan Control Panel alternatif yang bisa dibilang masih baru. RunCloud adalah control panel yang mengunggulkan fitur hybrid nginx+apache yang cepat untuk load sebuah website. Untuk biaya yang dibebankan memang sama yaitu $10/bulan tetapi tidak untuk satu server saja melainkan $10/bulan untuk semua server yang sobat kentos punya.. haha.. mantap betul bukan.. ??
Penasaran dengan RunCloud? Klik runcloud.io
Oke.. Kentos tidak akan mereview banyak tentang RunCloud disini. Melainkan hanya ingin memberitahu masalah yang dialami ketika menggunakan fitur hybrid nginx+apache.
Jadi fitur hybrid nginx+apache ini akan membagi tugas, file statis seperti html, css, js, image, xml akan diproses oleh nginx sedangkan file dinamis akan diproses oleh Apache2 + PHP-FPM.
Kendala muncul ketika kentos akan menggunakan plugin favorit yaitu byrev wp picshield tidak bekerja sebagaimana mestinya.
Karena sudah diketahui tugas-tugas mereka kentos langsung menuduh nginx sebagai pelakunya karena .htaccess tidak terbaca oleh apache2.
Kentos mencari cari dimana letak config nginx dan ketemu di

/etc/nginx-rc/conf.d/namadomain.d

kemudian edit file main.conf dengan perintah

nano main.conf

Cari location yang menyebut sebuah ekstensi gambar seperti gif, png, jpg dan jpeg.
Sebelumnya terlihat seperti ini :

location ~ .(ico|css|gif|jpe?g|png|gz|zip|flv|rar|wmv|avi|css|js|swf|png|htc|mpeg|mpg|txt|otf|ttf|eot|woff|svg|html)$ {

dan kentos ubah menjadi seperti ini :

location ~ .(ico|css|gz|zip|flv|rar|wmv|avi|css|js|swf|png|htc|mpeg|mpg|txt|otf$

Sudah tinggal reload aja config nginx dengan perintah dibawah :

systemctl reload nginx-rc

Silahkan coba lagi. 🙂

Membuat Featured Image Otomatis Di Setiap Post WordPress

Kalo kamu baca ini pasti lagi bingung cara membuat Featured Image di WordPress secara otomatis ya? Atau kelupaan ada beberapa post di blog kamu yang tidak menggunakan Featured Image?

Langsung saja salin PHP code dibawah ini ke file functions.php di tema WordPress kamu. Taruh aja paling bawah.

//featured image
function autoset_featured() {
          global $post;
          $already_has_thumb = has_post_thumbnail($post->ID);
              if (!$already_has_thumb)  {
              $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
                          if ($attached_image) {
                                foreach ($attached_image as $attachment_id => $attachment) {
                                set_post_thumbnail($post->ID, $attachment_id);
                                }
                           }
                        }
      }
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');

Silahkan kamu cek apakah tiap post sudah ada featured image atau belum? Jika sukses atau ada masalah tanyakan di komentar ya.

Cara Mengatasi WordPress database error: [Duplicate entry '0' for key 'PRIMARY']

Beberapa saat lalu kentos menemukan error yang lumayan membuat panik. WordPress database error: [Duplicate entry ‘0’ for key ‘PRIMARY’] ini akan muncul ketika menambahkan entry, contohnya membuat postingan baru, user baru, halaman baru dan lain-lain.
Contoh error yang kentos alami :
Cara Mengatasi WordPress database error: [Duplicate entry '0' for key 'PRIMARY']

WordPress database error: [Duplicate entry '0' for key 'PRIMARY']
INSERT INTO `wp_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_content_filtered`, `post_title`, `post_excerpt`, `post_status`, `post_type`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_parent`, `menu_order`, `post_mime_type`, `guid`) VALUES (1, '2016-01-23 13:50:44', '0000-00-00 00:00:00', '', '', 'Auto Draft', '', 'auto-draft', 'post', 'open', 'open', '', '', '', '', '2016-01-23 13:50:44', '0000-00-00 00:00:00', 0, 0, '', '')

Cara Mengatasi WordPress database error: [Duplicate entry ‘0’ for key ‘PRIMARY’]

Error tersebut berati menandakan bahwa ada duplikasi id atau ada id yang sama dikarenakan ada field dari salah satu tabel yang tidak menggunakan auto increment. Oleh karena itu silahkan aktifkan auto increment pada primary ID.
Bagaimana cara mengaktifkan auto increment untuk primary ID?

  • Buka phpMyAdmin
  • pilih database WordPress
  • pilih tabel dimana error itu muncul (pada contoh kasus diatas duplikasi muncul di tabel wp_posts maka pilih tabel wp_posts)
  • Ubah baris pada field “comments_id”
  • Beri tanda centang pada “auto_increment”
  • Save

WordPress database error: [Duplicate entry '0' for key 'PRIMARY'] Auto Increment WordPress database error: [Duplicate entry '0' for key 'PRIMARY']
Silahkan ulangi pada tabel lain jika masih ada error ditabel lain untuk mengatasi WordPress database error: [Duplicate entry ‘0’ for key ‘PRIMARY’].

Cara install XCache di CentOS agar load website jadi kencang

Cara install XCache di CentOS agar load website jadi kencang ini adalah artikel lanjutan dari artikel sebelumnya mengenai cara install Kloxo-MR di VPS Centos dan cara install ioncube loader di VPS CentOS pada Kloxo-MR.
XCache adalah modul PHP dimana digunakan untuk menyimpan cache webserver agar load website menjadi lebih ringan atau kencang. Cara kerja XCache ini adalah meng-cache script PHP yang pernah dicompile dalam memory. XCache dapat mempercepat kinerja PHP pada server dengan cara menghilangkan waktu kompilasi script PHP dengan caching yang dikompilasi dari script PHP ke dalam RAM dan menggunakan script PHP yang sudah terkompilasi tersebut langsung dari RAM.

Cara install XCache di CentOS agar load website jadi kencang

Dini kentos menggunakan PHP 5.3.29 alias php53u.
PHP Brach php53u Kloxo MR
Setelah menginstall Kloxo MR dan akan menggunakan cache webserver maka diperlukan XCache ini untuk melakukan caching. Sebelum ke tahap install, terlebih dahulu cek modul PHP yang telah terinstall dengan cara :

php -v

contoh hasilnya :

[[email protected] ~]# php -v
PHP 5.3.29 (cli) (built: Aug 14 2014 12:38:37)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.
[[email protected] ~]#

Yang sudah terinstall barulah ionCube PHP Loader. Mari dimulai proses install XCache dengan cara berikut :
Cek dulu ketersediaan package dengan perintah yum list php53u-xcache* jika menggunakan php53u.

[[email protected] ~]# yum list php53u-xcache*
Loaded plugins: fastestmirror, priorities, protectbase, replace, security
Loading mirror speeds from cached hostfile
 * mratwork-epel: mirror.us.xxx.net
 * mratwork-ius-stable: mirror.symnds.com
0 packages excluded due to repository protections
Available Packages
php53u-xcache.i686                  3.1.0-1.ius.el6         mratwork-ius-archive
php53u-xcache-debuginfo.i686        3.1.0-1.ius.el6         mratwork-ius-archive
[[email protected] ~]#

Ditemujan 2 packages, untuk menginstall langsung keduanya gunakan perintah berikut :

yum install php53u-xcache*

Hasil saat Proses install XCache

[[email protected] ~]# yum install php53u-xcache*
Loaded plugins: fastestmirror, priorities, protectbase, replace, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * mratwork-epel: mirror.us.xxx.net
 * mratwork-ius-stable: mirror.symnds.com
0 packages excluded due to repository protections
Resolving Dependencies
--> Running transaction check
---> Package php53u-xcache.i686 0:3.1.0-1.ius.el6 will be installed
---> Package php53u-xcache-debuginfo.i686 0:3.1.0-1.ius.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package                  Arch  Version             Repository             Size
================================================================================
Installing:
 php53u-xcache            i686  3.1.0-1.ius.el6     mratwork-ius-archive  108 k
 php53u-xcache-debuginfo  i686  3.1.0-1.ius.el6     mratwork-ius-archive  244 k
Transaction Summary
================================================================================
Install       2 Package(s)
Total download size: 352 k
Installed size: 1.5 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): php53u-xcache-3.1.0-1.ius.el6.i686.rpm            | 108 kB     00:00
(2/2): php53u-xcache-debuginfo-3.1.0-1.ius.el6.i686.rpm  | 244 kB     00:00
--------------------------------------------------------------------------------
Total                                           612 kB/s | 352 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : php53u-xcache-debuginfo-3.1.0-1.ius.el6.i686                 1/2
  Installing : php53u-xcache-3.1.0-1.ius.el6.i686                           2/2
  Verifying  : php53u-xcache-debuginfo-3.1.0-1.ius.el6.i686                 1/2
  Verifying  : php53u-xcache-3.1.0-1.ius.el6.i686                           2/2
Installed:
  php53u-xcache.i686 0:3.1.0-1.ius.el6
  php53u-xcache-debuginfo.i686 0:3.1.0-1.ius.el6
Complete!
[[email protected] ~]#

Hasil setelah XCache terinstall

[[email protected] ~]# php -v
PHP 5.3.29 (cli) (built: Aug 14 2014 12:38:37)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
    with XCache v3.1.0, Copyright (c) 2005-2013, by mOo
    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.
    with XCache Optimizer v3.1.0, Copyright (c) 2005-2013, by mOo
    with XCache Cacher v3.1.0, Copyright (c) 2005-2013, by mOo
    with XCache Coverager v3.1.0, Copyright (c) 2005-2013, by mOo
[[email protected] ~]#

Dah… Selesai juga install XCache di CentOS agar load website jadi kencang. Silahkan di konfigurasi sendiri script php cachingnya.

Cara Membuat Form Daftar, Login dan Logout dengan PHP MySQL

Cara Membuat Form Daftar, Login dan Logout dengan PHP MySQL – Dalam pembuatan website tentunya memerlukan sebuah form, baik untuk menentukan member atau admin.

Membuat Database MySQL dengan phpMyAdmin

Terlebih dahulu buatlah database, dalam contoh ini saya menggunakan phpMyAdmin.

  • Buat database dengan nama latihan”.
    Cara Membuat Form Daftar, Login dan Logout dengan PHP MySQL
  • Buat tabel dengan nama “user” dan isikan 3 untuk jumlah kolom yang akan dibuat.
    Cara Membuat Form Daftar, Login dan Logout dengan PHP MySQL
  • Kemudian isikan ke 3 kolom yang telah dibuat tadi seperti berikut :
    Gambar Cara Membuat Form Daftar, Login dan Logout dengan PHP MySQL

  • Jika sudah silahkan tekan tombol save untuk menyimpan field yang telah kita isikan.

Apabila langkah diatas telah dilalui berati database telah selesai dibuat dan siap digunakan. Langkah berikutnya adalah membuat form dan proses PHP ke database MySQL.
Disini diperlukan beberapa file yang harus dibuat.

  1. koneksi.php
  2. index.php
  3. daftar.php
  4. prosesdaftar.php
  5. login.php
  6. proseslogin.php
  7. logout.php

Sebelum ke pembuatan form daftar dan login saya minta untuk membuat file koneksi.php untuk menghubungkan ke database, dengan kode dibawah ini.

<?php $host = "localhost"; $user = "root"; $pass = ""; $db = "latihan"; $konek = mysql_connect($host, $user, $pass) or die ('Koneksi Gagal! '); mysql_select_db($db); ?>

Pertama buatlah file dengan nama index.php dimana file ini akan ditampilkan ketika login sukses, isikan dengan kode dibawah :

<?php session_start();
if(!isset($_SESSION['username'])) {
header('location:login.php'); }
else { $username = $_SESSION['username']; }
require_once("koneksi.php");
$query = mysql_query("SELECT * FROM user WHERE username = '$username'");
$hasil = mysql_fetch_array($query);
?>
<center><?php echo "<h2>Selamat Datang, $username</h2>"; ?><a href="logout.php"><b>Logout</b></a></center>

Buatlah file dengan nama daftar.php dan isikan dengan code dibawah ini.

<?php session_start();
if(isset($_SESSION['username'])) {
header('location:index.php'); }
?>
<center>
<form action="prosesdaftar.php" method="post">
<table>
<tbody>
<tr>
<td colspan="2" align="center">
<h1>Daftar Baru</h1>
</td>
</tr>
<tr>
<td>Username</td>
<td>: <input name="username" type="text" /></td>
</tr>
<tr>
<td>Password</td>
<td>: <input name="password" type="password" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="Daftar" /> <input type="reset" value="Batal" /></td>
</tr>
<tr>
<td colspan="2" align="center">Sudah Punya akun ? <a href="login.php"><b>Login</b></a></td>
</tr>
</tbody>
</table>
</form>
</center>

Sekarang buat file prosesdaftar.php untuk melakukan proses yang diminta pada file daftar.php.

<?php require_once("koneksi.php");
$username = $_POST['username'];
$pass = $_POST['password'];
$cekuser = mysql_query("SELECT * FROM user WHERE username = '$username'");
if(mysql_num_rows($cekuser) <> 0) {
echo "Username Sudah Terdaftar!";
echo "<a href="daftar.php">&amp;amp;laquo; Back</a>";
} else {
if(!$username || !$pass) {
echo "Masih ada data yang kosong!";
echo "<a href="daftar.php">&amp;amp;laquo; Back</a>";
} else {
$simpan = mysql_query("INSERT INTO user(username, password) VALUES('$username','$pass')");
if($simpan) {
echo "Pendaftaran Sukses, Silahkan <a href="login.php">Login</a>";
} else {
echo "Proses Gagal!";
}
}
}
?>

Selanjutnya adalah membuat file login.php dengan kode dibawah.

<?php session_start();
if(isset($_SESSION['username'])) {
header('location:index.php'); }
require_once("koneksi.php");
?>
<center>
<form action="proseslogin.php" method="post">
<h1>Masuk</h1>
<table>
<tbody>
<tr>
<td>Username</td>
<td>: <input name="username" type="text" /></td>
</tr>
<tr>
<td>Password</td>
<td>: <input name="password" type="password" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="Login" /> <input type="reset" value="Batal" /></td>
</tr>
<tr>
<td colspan="2" align="center">Belum Punya akun ? <a href="daftar.php"><b>Daftar</b></a></td>
</tr>
</tbody>
</table>
</form>
</center>

Agar file login dapat berjalan buatlah file proseslogin.php dengan kode dibawah.

<?php session_start();
require_once("koneksi.php");
$username = $_POST['username'];
$pass = $_POST['password'];
$cekuser = mysql_query("SELECT * FROM user WHERE username = '$username'");
$jumlah = mysql_num_rows($cekuser);
$hasil = mysql_fetch_array($cekuser);
if($jumlah == 0) {
echo "Username Belum Terdaftar!";
echo "<a href="login.php">? Back</a>";
} else {
if($pass <=> $hasil['password']) {
echo "Password Salah!
";
echo "<a href="login.php">&amp;amp;laquo; Back</a>";
} else {
$_SESSION['username'] = $hasil['username'];
header('location:index.php');
}
}
?>

Dan yang terakhir adalah membuat file logout.php untuk menghapus session yang telah digunakan, isi dengan kode dibawah.

<?php session_start();
unset($_SESSION['username']);
?>
<h2>Anda telah berhasil logout..</h2>
Silahkan klik <b>disini</b> untuk login kembali

Pada Cara Membuat Form Daftar, Login dan Logout dengan PHP MySQL ini digunakan fungsi session dan method POST. Baca juga Fungsi dan Perbedaan Method POST dan GET pada PHP.

Fungsi dan Perbedaan Method POST dan GET pada PHP

Fungsi dan Perbedaan Method POST dan GET pada PHP – Dalam dunia PHP Programming tentu menggunakan Method POST dan GET. Apa itu Method POST dan GET ? Sedikit pengertian dari kegunaan Method POST dan GET ini sama yaitu?untuk mengirimkan nilai variabel ke halaman lain atau mengirimkan ke database dan mengambil nilai variabel dari halaman lain atau mengambil data pada database.
Penggunaan Method POST dan GET ini biasanya menggunakan form pada halaman PHP. Untuk perbedaannya sangatlah kecil pada Method POST dan GET namun sangat terlihat.
Sebagai contoh :

Method $_POST

Buatlah file dengan nama?index.php?dan isikan dengan code dibawah ini.
<html>
<head>
<title>Fungsi dan Perbedaan Method POST dan GET pada PHP</title>
</head>
<body>
Silakan Login dengan Username dan Password Anda
<form action="lihat.php" method="POST">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Login"/></td>
</tr>
</table>
</form>
</body>
</html>

Kemudian buatlah file?lihat.php?untuk menampilkan input pada?index.php?dengan code dibawah ini.
<html>
<head>
<title>Fungsi dan Perbedaan Method POST dan GET pada PHP</title>
</head>
<body>
Username : <?php echo $_POST["username"]; ?><br/>
Password : <?php echo $_POST["password"]; ?>
</body>
</html>

Maka dibrowser akan tampil seperti ini.
Fungsi dan Perbedaan Method POST dan GET pada PHP

?Method $_GET

Buatlah file dengan nama index.php dan isikan dengan code dibawah ini.
<html>
<head>
<title>Fungsi dan Perbedaan Method POST dan GET pada PHP</title>
</head>
<body>
Silakan Masukkan Username dan Password Anda
<form action="lihat.php" method="GET">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Login"/></td>
</tr>
</table>
</form>
</body>
</html>

Kemudian buatlah file lihat.php untuk menampilkan input pada index.php dengan code dibawah ini.
<html>
<head>
<title>Fungsi dan Perbedaan Method POST dan GET pada PHP</title>
</head>
<body>
Username : <?php echo $_GET["username"]; ?><br/>
Password : <?php echo $_GET["password"]; ?>
</body>
</html>

Maka dibrowser akan tampil seperti ini.
Fungsi dan Perbedaan Method POST dan GET pada PHP
Setelah melihat hasilnya pasti kamu sudah bisa menyimpulkan apa perbedaan Method POST dan GET ini.?Perbedaan Method POST dan GET pada PHP ini salah satunya adalah pada URL. Pada Method POST tidak menampilkan nilai variabel pada URL dan Method GET menampilkan nilai variabel yang dikirimkan.
Kesimpulannya :

  • Method POST tidak menampilkan nilai variabel pada URL dan Method GET menampilkan nilai variabel yang dikirimkan.
  • Method POST lebih aman dan Method GET kurang aman (pada contoh diatas berati password ditampilkan pada URL).
  • Jika Method GET dibatasi panjang string hingga 2047 karakter, Method POST tidak.
  • Perbedaan pengambilan data jika Method POST menggunakan $_POST sedangkan Method GET menggunakan $_GET.
  • Method POST biasanya digunakan untuk input dari FORM, Method GET menggunakan input dari LINK atau akses menggunakan link.
  • Method POST digunakan untuk mengirimkan data rahasia seperti password, Method GET digunakan untuk mengirimkan/mengambil data pablik seperti id_user atau id_halaman.

Catatan : Sebenarnya Method POST?dibatasi juga dengan ukuran 8MB, namun dapat diubah pada pengaturan?post_max_size dalam file php.ini (jika kamu memiliki hak akses ini).
Berikut demikian artikel sederhana untuk mengenali?Fungsi dan Perbedaan Method POST dan GET pada PHP.