文章

目前顯示的是 七月, 2010的文章

解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了
查了一下錯誤訊息的 log:

Docs: https://docs.mongodb.org/manual
  Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

 1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...
 1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.
 1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112
 1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1
 1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server.



看起來應該是權限的問題: 發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。 所以大部分的解決說明都是這樣作:
chown -R mongod:mongod …

將多階層JOSN 轉成php 陣列的方式

這幾天剛好在研究facebook api

它們使用的方式就是用json把值回傳給我們,但是呢?大部分的API回傳值都是多階層的JSON不是單階層的

json傳回的型態是obiect所以我們需要把json decode後再將資料轉變成陣列
如果只是單一階層的json object那麼我們只需要使用php官方提供的get_object_vars()函式就可以輕鬆搞定 
但是如果是多階層的就沒有官方的函式可以用了
拜訪google大神後發現有人提供了這樣的函式


function std_class_object_to_array($stdclassobject)
{
    $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;

    foreach ($_array as $key => $value) {
        $value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value;
        $array[$key] = $value;
    }

    return $array;
}
// print_r(std_class_object_to_array(json_decode($json_str)));
?> 在文件中先貼上這支function後,std_class_object_to_array()這隻函式就可以幫我們把多階層的object也加入陣列中瞜


是不是很方便阿!


參考資料來源:
PHP 將 Object 轉換成 Array (CLI JSON Reader) | Tsung's Blog

CENTOS 5 中 MySQL忘記密碼重新設定方法

在網路上面找到一堆沒用的資料好不容易又被我找到說對了的人

資料來源:http://www.tisswb.cn/archives/552.html

很剛好的我的mysql也是用yum安裝的


只要按照下面的步驟就可以完成更新的動作

# /etc/init.d/mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p