| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/bin/bash
- set -e
- # --- News FFI 模块编译脚本 ---
- # 本脚本仅用于在本地开发环境中编译 Go 源代码为 .so 共享库。
- echo "[BUILD] 进入 ffi 目录..."
- cd ffi
- echo "[BUILD] 开始编译 Go 源码..."
- # 运行 make 命令,它会处理清理和编译的全部工作
- make
- echo "[BUILD] 编译成功! lib_news.so 已更新。"
- echo ""
- echo "==================== 重要提醒 ===================="
- echo "下一步,你必须手动重启 PHP-FPM 服务来清除缓存,"
- echo "否则你的代码改动将不会生效!"
- echo ""
- echo "请运行以下命令:"
- echo "docker-compose restart php"
- echo "================================================"
- # 返回原始目录
- cd ..
- # 2. 生成 PHP FFI 适配层
- cat > $BUILD_DIR/NewsServiceFFI.php <<EOF
- <?php
- class NewsService
- {
- protected $ffi;
- public function __construct()
- {
- $this->ffi = FFI::cdef(
- file_get_contents(__DIR__ . '/lib_news.h'),
- __DIR__ . '/lib_news.so'
- );
- }
- public function getList()
- {
- return json_decode(FFI::string($this->ffi->GetList()), true);
- }
- public function getById($id)
- {
- return json_decode(FFI::string($this->ffi->GetById($id)), true);
- }
- public function create($data)
- {
- return $this->ffi->Create(json_encode($data));
- }
- public function update($id, $data)
- {
- return $this->ffi->Update($id, json_encode($data));
- }
- public function delete($id)
- {
- return $this->ffi->Delete($id);
- }
- public function generateSummary($content)
- {
- return FFI::string($this->ffi->GenerateSummary($content));
- }
- public function checkContent($content)
- {
- return $this->ffi->CheckContent($content);
- }
- public function extractKeywords($content)
- {
- return explode(',', FFI::string($this->ffi->ExtractKeywords($content)));
- }
- }
- EOF
- echo "[build] PHP FFI 适配层已生成。" | tee -a $LOG_FILE
- # 3. 自动打包 build 目录
- cd $BUILD_DIR
- zip -r package.zip ./* > /dev/null
- cd ..
- echo "[build] 已自动打包为 $PACKAGE" | tee -a $LOG_FILE
- echo "[build] FFI 动态库和 PHP 适配层已生成到 build/ 目录。详见 $LOG_FILE"
|