2019年12月18日 星期三

Clear Cache in Laravel

Clear Cache in Laravel
第一次遇到 route 被 Cached...........................................
最快解法
Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "Cache is cleared";
});

2019年12月12日 星期四

PHP~當客戶端喔

一個寧靜的下午
遇到一個要由PHP 當 客戶端的情境
往往都是PHP 當伺服器在接收客戶端的服務
這次反過來要去當客戶端
發送訊息給另一個伺服器
服務的伺服器為WebSocket Server
這個要搭建起來用PHP + Html5 根本無難度
但是要由PHP send message .... 一直卡住
翻尋許久,求助大大神
最後滑倒後踢到垃圾桶,踩到黃金等等
發現了
# "textalk/websocket
  # use WebSocket\Client;
  # composer  require textalk/websocket
開心的加載進去,剩下的就差不多了....
$client = new Client("ws://" . $this->input->server('HTTP_HOST') . ":".'port');
$client->send('47b6"}}');
$client->receive();
<途中插曲>
Port 忘記打開.... 所以一直連接不上

2019年12月4日 星期三

WebSocket 壓力測試 Example(多執行緒)

使用工具 :
Python 3.8
程式碼:
import websocket
try:
    import thread
except ImportError:
    import _thread as thread
import time
import threading
import json

"""
這是一個卡 WebSocket 的 Example
"""

def on_message(ws, message):
    # parse x:
    message = json.loads(message)
    print("message", message, "\n")
    print("\n");


def on_error(ws, error):
    # print(error)
    print("error", error, "\n")


def on_close(ws):
    print("### closed ###")

def on_open(ws):
    print("ws coennet...")
    # def run(*args):
    #     print("ws coennet...")
    #     # for i in range(3):
    #     #     time.sleep(1)
    #     #     ws.send("Hello %d" % i)
    #     # time.sleep(1)
    #     # ws.close()
    #     print("thread terminating...")
    # thread.start_new_thread(run, ())


def run_s(i):
    websocket.enableTrace(True)
    wsc = "接口"
    ws = websocket.WebSocketApp(wsc,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()


if __name__ == "__main__":
    # 建立 5 個子執行緒
    num = 1
    threads = []
    for i in range(num):
        threads.append(threading.Thread(target=run_s, args=(i,)))
        threads[i].start()
    # 等待所有子執行緒結束
    for i in range(num):
        threads[i].join()

    print("Done.")
QQ,我的臉書被排擠了.........

2019年10月5日 星期六

快速且大量數據寫入Mysql。每秒10萬筆數據插入

最近在玩 Golang 語言,發現它的平行雲算真的強大 !!!!!

關鍵字

  • sync.WaitGroup 
  1. 所先引用函式庫
  2. 設定  wg.Add(1) 與 調用要跑的方法
  3. 最後  呼叫  wg.Wait() 阻塞它,等待 goroutine們的執行完畢
-------------------------------------------------------------
分享我的code



以上就是我在處理大量log,入庫的方法,調用多平行運算方法,在處理大量數據,再透過其他手法,突破AWS 的 IPOS限制,達到S : 10萬筆數據寫入的方法<當然表結構沒有設計得很完美,但是堪用就好....>

2018年8月17日 星期五

無聊閒逛,且做出來的一個簡單樣子

亞太股票

最近開始在自學一些前端工.... ><!
也準備著手去搞一些MIS的專業技能,雲服務感覺很重要 !!!

2018年8月14日 星期二

2018年8月9日 星期四

分享文章 利用 composer 實作 CodeIgniter 輸出報表

使用情境        之前要PHP 產生報表,都要先去下載 phpspreadsheet (前身 php execl ),把整個物件放進去專案內,假如用框架又要再調整一些load.... 剛好看到這篇  利用  composer  phpspreadsheet   library,只要修改 application/config/config.php 中的 $config['composer_autoload'] = 'vendor/autoload.php'; ,在想要實作的 use 需要的 class ,一個簡單報表就可以產生了~~ 備註 : Execl2007 需要 php-zip 擴展

https://arjunphp.com/generate-excel-phpspreadsheet-codeigniter-php/

2018年8月6日 星期一

分享一些不錯的PHP小函式

1. 檢查 參數是否存在 與 是否為空
function checkRequest($Request, $checkArray)
{
    foreach ($checkArray as $key => $value) {
        if (array_key_exists($value, $Request) == false && empty($Request[$value])) {
            return false;
        }
    }
    return true;
}
==================
時常要校驗請求的參數是否有缺少或者是不為空值,可以利用  array_key_exists  與  empty 快速篩選出結果,就可以不用寫一大堆 if else ......

2. 調用Curl Post 
    本小魯前幾天遇到一個 會被導向301的問題,所以在
//函数中加入下面这条语句 curl抓取页面时遇到重定向的解决方法
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

/**
* [my_curl 外部連線 http]
* @param [string] $url [description]
* @param [array] $post [description]
* @return [string] $result [description]
*/
function curlPost($url, $post)
{

// echo $url . '<hr>';
// echo "<pre>";
// print_r($post);
// echo "</pre>";
// echo "<hr>";
// ====================
//初始化curl
$ch = curl_init();
//永遠抓最新
$header[] = "Cache-Control: no-cache";
$header[] = "Pragma: no-cache";
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//等待時間
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
//抓取指定網頁
curl_setopt($ch, CURLOPT_URL, $url);
//post提交方式
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//设置header
curl_setopt($ch, CURLOPT_HEADER, 0);
//要求结果為字串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//函数中加入下面这条语句 curl抓取页面时遇到重定向的解决方法
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode != 200) {
$result = "";
}
curl_close($ch);
return $result;
}


2018年6月2日 星期六

閒聊 職場~

小魯隨便說

可能很多人,時常進去每個職場,當初進去的工作是某個職位別,但是進去後,假如遇到開明的上司,就一帆風順,前途光明,如果很不幸得遇到是那種空降上司且心態是有人負責就好的時候,可能就悲劇的開始。

小弟我的應對方法

  1. 不把所有實力展現出來,因為展現了,事情會越變越多,最後你一個人可能負責了N個單位,但是這幾個單位的人,就會變成薪水小偷。
  2. 做好自己分內事情,強化自己的專業技能,把自己的刀磨亮,試圖往更上層的地方跑。
  3. 強調文件的重要性,盡量已有紀錄的方式與上司或同事在溝通事情,往往是有人負責的心態的管理者,通常都很愛用口頭轉達事項,因為出問題了,沒有紀錄可以查詢。
  4. 忍耐,忍耐,還是忍耐。
老一輩的人往往很愛說,不要嫌事情多,有事情做就是好事,這觀念讓人打上許多問號,有事情做當然好,但是不屬於你的工作職務內容,你幫人解決了,這變成別人賺了許多小利益,且如果最後養成了那群人的習慣,就會明著說,之前都是你負責的,之後這塊你就接手做吧。

最後 人不能太過於善良,有些時候要硬點脾氣,不是萬事都OK的心態,就算是很簡單的事情,你幫人做了,只是害了他人,也是害了自己罷了 ! 萬萬不能做幫到完成,從旁協助就行了!

拯救老電腦

 Sempron 3850 Socket AM1入門四核處理器 2014 8ram  作業系統 windows 10 1904 評論: 八年的核心,其他的故障電腦拆解零組件都是拼裝. 整體使用上,可以基本文書,瀏覽網站,聽音樂等等都可以接受的。 下次再來繼續搞更多..