PHP有哪些殺手級超厲害框架或庫或應用?

php武器庫 發佈 2022-04-09T13:11:58.029774+00:00

PHP發展了這麼多年,有許多有趣的項目。它有以下特點:可以輕易地實現DNN、CNN、RNN 和 Attention 機器學習模型。

PHP發展了這麼多年,有許多有趣的項目。讓我們擺脫那些討厭的增刪改查,一起來了解這些有趣的項目。

1:php-ai/php-ml,一個高級的PHP的機器學習庫

php-ml是一個使用PHP實現的機器學習庫,包含算法、神經網絡、交叉驗證、預處理、特徵提取等人工智慧領域中常用的功能方案。

官方還提供了眾多的案例,比如:

  • 檢測語言分類
  • MNIST 識別手寫字體(標準的人工智慧入門項目)
  • 垃圾郵件過濾
  • 文章分類
  • 預測葡萄酒的質量

php-ml有一個完善的文檔,並且有豐富的博客文章。但是這已經是人工智慧的領域了,你的知識結構可能一時半會還利用不了。

簡單地用法如下:

require_once __DIR__ . '/vendor/autoload.php';

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

$classifier->predict([3, 2]);
// return 'b'

2:rindow/rindow-neuralnetworks,一個高級的PHP的神經網絡庫

這也是一個人工智慧項目,是一個高級的PHP的神經網絡庫,可以使用PHP實現一個強大的機器學習項目。

它有以下特點:

  • 可以輕易地實現DNN、CNN、RNN 和 Attention 機器學習模型
  • 和Python的Keras 很相似,可以利用相關經驗
  • 提供了機器學習中的機器視覺和自然語言的處理
  • 處理性能是tensorflow CPU 的兩倍
  • 無需專門的運行環境,可以在任何電腦環境運行
  • 附帶有趣的示例程序

並且有相關的計算擴展,用於提高性能。還有對於GPU的擴展,可以利用GPU的計算能力,進一步提高性能,不過目前這一點還在測試階段。

3:rubix/ml,一個高級的PHP的機器學習和深度學習庫

是的, 這裡又介紹了一個PHP的人工智慧庫。

他有這樣幾個特點:

  • 對開發人員很友好的接口方法調用
  • 40多種監督或非監督學習方法
  • 支持 ETL、預處理和交叉驗證

與上面兩個相比相比,它提供了最多的教程和示例項目 教程和示例項目 ,其中比較有趣的有離婚預測、DOTA2勝率預測等, 並且提供了電報群的交流渠道。

4:nlp-tools/nlp-tools,一個供初學者使用的半高級的自然語言處理庫

這是一個專門用於處理人工智慧中自然語言處理領域的庫,他提供的方法相比之前幾個會更低底層一些,但使用起來仍然很優雅。

它內置了多種分類模型,類聚方法,分詞器,數據集等等幾乎這一領取所需的所有工具和數據。

與之前介紹的幾個項目相比,它是專門用來處理自然語言這一領域的,並且對初學者十分友好。有豐富的文檔,內置了齊全的工具和數據。

這裡演示一下分詞效果:

include('vendor/autoload.php');

use NlpTools\Tokenizers\WhitespaceAndPunctuationTokenizer;

$text = "Please allow me to introduce myself
        I'm a man of wealth and taste";

$tok = new WhitespaceAndPunctuationTokenizer();

print_r($tok->tokenize($text));

// Array
// (
//    [0] => Please
//    [1] => allow
//    [2] => me
//    [3] => to
//    [4] => introduce
//    [5] => myself
//    [6] => I
//    [7] => '
//    [8] => m
//    [9] => a
//    [10] => man
//    [11] => of
//    [12] => wealth
//    [13] => and
//    [14] => taste
// )

5:workerman/gateway-worker,一個分布式的長連結服務框架

GatewayWorker基於Workerman開發的一個項目框架,用於快速開發TCP長連接應用,例如app推送服務端、即時IM服務端、遊戲服務端、物聯網、智能家居等等。

與其他的此類方案相比,它提供了這樣幾個無可比擬的優點:

  • 內置進程守護,通過簡單的命令行即可穩定運行,無需自己去實現後台運行或進程守護
  • 內置分布式設計,可以在不需要修改任何代碼的情況下,實現分布式部署
  • 完善的長連結操作,包括給連接綁定UID、給連接綁定分組、維護SESSION等
  • 提供標準的系統內推送消息的用法,提供了一個client,可以隨時向gateway網絡中發送消息

gatewayworker幾乎解決了長連結開發中的所有痛點,非常好用。要注意的是,他是為長連結而設計的框架,如果是短連接(UDP)則需要其他方案。

它的啟動方式如下,無需更多操作,健壯地完成進程守護、平滑重啟。

啟動
以debug(調試)方式啟動
php start.php start
以daemon(守護進程)方式啟動
php start.php start -d

停止
php start.php stop

重啟
php start.php restart

平滑重啟
php start.php reload

查看狀態
php start.php status

6:robmorgan/phinx,一個資料庫遷移工具

什麼是資料庫遷移工具呢,你可以先這樣理解,就是一個資料庫導入工具。

一般的如果我們需要導入資料庫,需要先去之前的資料庫導出sql文件,然後到另一個站點上導入sql文件。似乎這是天經地義的,沒什麼更好的方法,再好一點也就是做一個一鍵安裝腳本。

其實有更好的方案,就是用資料庫遷移工具phinx,在安裝資料庫時,不需要導出和導入sql文件,而是直接使用phinx提供的方法,設計好表結構,然後通過phinx的命令導入。

這樣有很多好處:

  • 更優雅的安裝方式,與系統代碼一起管理,無需導出sql文件
  • 支持資料庫升級降級,可以跟隨系統升級,自動對比數據表變化,不用擔心數據丟失
  • 支持多款資料庫,在phinx設計的表結構可以直接安裝到Mysql、PostgreSQL、SQLite、SQL Server

phinx絕對是現代的程序安裝解決方案,你值得投入精力去使用它。

它的基本的用法像這樣:

<?php

use Phinx\Migration\AbstractMigration;

class CreateUserLoginsTable extends AbstractMigration
{
    public Function change()
    {
        // 創建表結構
        $table = $this->table('user_logins');
        $table->addColumn('user_id', 'integer')
              ->addColumn('created', 'datetime')
              ->create();
    }
}

7:league/flysystem,一個PHP的萬能的文件存儲操作庫

flysystem是一個PHP的文件操作庫,比如文件的讀取、寫入、目錄列表等等操作。與眾不同的是,他是「萬能的」。其實說它是萬能的有些誇張了,但是他官方支持了以下系統:

  • 本地存儲
  • FTP存儲
  • SFTP存儲
  • 內存存儲
  • 亞馬遜雲存儲
  • 谷歌雲存儲
  • WebDAV存儲

在社區生態中,還支持我們經常接觸的一些系統:

  • 阿里雲存儲
  • 七牛雲存儲
  • Dropbox存儲
  • 騰訊雲存儲
  • 華為雲存儲

等等,如果你需要,也可以自定義驅動。

就像下面的代碼一樣,對文件的操作是通用兼容的,如果需要切換存儲系統,換一個驅動就可以了。

// 設置驅動
$adapter = new League\Flysystem\Local\LocalFilesystemAdapter($rootPath);
$filesystem = new League\Flysystem\Filesystem($adapter);

// 操作文件、目錄
$filesystem->write($path, $contents);
$filesystem->read($path);
$filesystem->delete($path);
$filesystem->listContents($path, $recursive);
$filesystem->fileExists($path);
$filesystem->has($path);
$filesystem->lastModified($path);
.....

8:PHP-CPP,一個C++的PHP擴展開發框架

相比介紹的前幾個項目,PHP-CPP並不是一個PHP的擴展或庫,它是一個C++的框架,用來開發PHP擴展。

眾所周知,PHP的擴展開發很困難,你一搜PHP的擴展開發,所有人都告訴你那可怕的Zend API,就像遇見了伏地魔一樣,人們不敢提起它。

PHP-CPP解決了這樣的混亂的Zend API的問題,實際上他解決了很多問題,使用他開發PHP擴展,寫起C++代碼來就像寫PHP一樣,畢竟PHP的語法也參考了C風格。

就像下面這樣,簡單幾行就完成了一個PHP擴展。

#include <phpcpp.h>
#include <iostream>

void myFunction()
{
    Php::out << "example output" << std::endl;
}

extern "C" {
    PHPCPP_EXPORT void *get_module() {
        static Php::Extension extension("my_extension", "1.0");
        extension.add<myFunction>("myFunction");
        return extension;
    }
}

PHP-CPP還提供了豐富的文檔和注釋,手把手教你如何註冊函數、調用函數、匿名函數、類和對象、解析和構造、魔術方法等。

9:PHP-FPM,一個強大的穩定的HTTP服務框架

很多人總是忽視這個PHP-FPM,甚至嫌棄他。

實際上,PHP-FPM是一個大殺器,

  • 穩定的運行
  • 豐富的擴展
  • 性能進階方案,

在Web中仍然閃閃發光。

關鍵字: