前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP Code Snippet

PHP Code Snippet

作者头像
Yifans_Z
发布2023-08-23 18:38:05
1990
发布2023-08-23 18:38:05
举报
文章被收录于专栏:与荔枝一起成长

PHP Sandbox

PHP.net

References

Laravel illuminate

代码语言:javascript
复制
# https://github.com/illuminate/database/blob/master/README.md
$capsule = new Capsule();
$capsule->addConnection($this->dbConfig);
$capsule->setAsGlobal();
// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();
$capsule->getDatabaseManager()->extend('mongodb', function ($config, $name) {
    $config['name'] = $name;

    return new \Jenssegers\Mongodb\Connection($config);
});

参数查看

代码语言:javascript
复制
# 查看 PHP 编译时的参数
php -r "phpinfo();" | grep configure

# 查看 .ini 配置文件路径
php --ini
php -r "phpinfo();" | grep "Configuration File"

# 查看 Modules
php -m

# 显示扩展配置
php --ri gd

# 检查扩展是否存在
php --re decimal

# 交互式运行模式。具有函数、常量、类名、变量、静态方法调用和类常量的 `tab` 补全功能
# http://php.net/manual/en/features.commandline.interactive.php
php -a

查看、修改内存限制

代码语言:javascript
复制
php -r "echo ini_get('memory_limit');"

php -r "phpinfo();" | grep memory
代码语言:javascript
复制
memory_limit = 1024M;
代码语言:javascript
复制
// 临时设置最大内存占用
ini_set('memory_limit', '1024M');
// 设置脚本最大执行时间为 0 永不过期
set_time_limit(0);

Too Many Open Files

PHP-FPM Too Many Open Files 24 Error (set open file descriptor limit)

代码语言:javascript
复制
vim php-fpm.conf

;rlimit_files = 1024
rlimit_files = 4096

重启 PHP-FPM。

Composer

aliyun repo

阿里云 Composer 全量镜像

代码语言:javascript
复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
代码语言:javascript
复制
"config": {
    "disable-tls": true,
    "gitlab-domains": [],
    "optimize-autoloader": true,
    "preferred-install": {
        "*": "dist"
    }
    "secure-http": false,
    "sort-packages": true,
},
"repositories": [
    {
        "type": "cvs",
        "url": "..."
    },
    {
        "type": "composer",
        "url": "https://mirrors.tencent.com/composer/"
    },
    {
        "type": "composer",
        "url": "https://mirrors.aliyun.com/composer/"
    },
    {
        "type": "composer",
        "url": "https://asset-packagist.org"
    }
]

忽略 php 版本限制

这个是极不推荐的,这样会造成库安装的版本错误。不应该使用。

代码语言:javascript
复制
composer require hellogerard/jobby --ignore-platform-reqs

推荐做法:

代码语言:javascript
复制
which composer
# /usr/local/bin/composer

{正确的 PHP 版本}/bin/php /usr/local/bin/composer require hellogerard/jobby

/usr/local/opt/php@7.1/bin/php -d memory_limit=-1 /usr/local/bin/composer update -vvv

emory-limit-errors for more info on how to handle out of memory errors

代码语言:javascript
复制
php -d memory_limit=-1 /usr/local/bin/composer update

更新 composer.lock

若项目之前已通过其他源安装,则需要更新 composer.lock 文件:

代码语言:javascript
复制
composer update --lock

homebrew PHP

🍺 Homebrew tap for PHP 5.6 to 8.2. PHP 8.2 is a nightly build.

shivammathur/homebrew-php

代码语言:javascript
复制
brew tap shivammathur/php

brew install shivammathur/php/php@8.1 -vvv

brew link --overwrite --force shivammathur/php/php@8.1
php -v

旧版本 MacOS 可以安装报错时尝试删除 XCode。

代码语言:javascript
复制
brew untap shivammathur/php

Real Client IP

代码语言:javascript
复制
# PHP7+
$clientIP = $_SERVER['HTTP_CLIENT_IP']
    ?? $_SERVER["HTTP_CF_CONNECTING_IP"] # when behind cloudflare
    ?? $_SERVER['HTTP_X_FORWARDED']
    ?? $_SERVER['HTTP_X_FORWARDED_FOR']
    ?? $_SERVER['HTTP_FORWARDED']
    ?? $_SERVER['HTTP_FORWARDED_FOR']
    ?? $_SERVER['REMOTE_ADDR']
    ?? '0.0.0.0';

动态实例化类

代码语言:javascript
复制
class Test1{
  public function __construct(){
    echo "Test1<br>";
  }
}

// 方法一
$class1 = "Test1";
new $class1();

// 方法二
$class2 = "Test2";
// 建立类的反射
$class2 = new ReflectionClass($class2);
// 相当于实例化类
$instance = $class2->newInstance();

– EOF –

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP Sandbox
  • PHP.net
  • References
  • Laravel illuminate
  • 参数查看
    • 查看、修改内存限制
      • Too Many Open Files
      • Composer
        • aliyun repo
          • 忽略 php 版本限制
            • emory-limit-errors for more info on how to handle out of memory errors
              • 更新 composer.lock
              • homebrew PHP
              • Real Client IP
              • 动态实例化类
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档