YYPHP#57「PHPでマルチスレッドについて聞きたい、php-srcのコミットを日々追っている人を見つけた、オブジェクト指向について話ができたら、Dockerを使ってLaravelプロジェクトを本番デプロイするやり方、他の言語とPHPはどのように違うか、Ubuntu・CentOS・ArchiLinux、アセンブリとOS開発」


これは2018年10月19日に開催したPHPerイベントYYPHP#57のイベントレポートです。

YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催はほぼ毎週、高田馬場にて。

YouTubeでの配信映像はこちら-> #YYPHP #57【PHPの情報交換・ワイワイ話そう・仲間作り・ゆるめ・にぎやかめ】

参加者9名(うちリモート3名)

  • PHP歴
    • 1年未満: 2名
    • 1年: 1名
    • 3年: 1名
    • 4年: 1名
    • 10年以上: 4名

今日の話題

雑談

  • Dart言語はTypeScriptに覇権を奪われた感があったが、Flutterで再注目されてきている。
    • 対抗がReact Native

PHPでマルチスレッドについて聞きたい

  • PHP: pthreads - Manual
  • 速いんですよね?
    • からなずしもそんなことないですよ
    • CPUのコア数に依存する
    • CPUコア1個だと意味がない
  • Go言語のgoroutine
    • マルチスレッドを書きやすい
    • goroutineとchannelがあるから並列処理が書きやすい
    • ミドルウェアが作りやすい
  • Ruby
    • スレッドがない
    • GIL (giant interpreter lock)
      • これがあるため複数スレッドを建てられるけど、結局一個一個しか処理されない
  • pthreads
    • Posix スレッドを使っている
    • Apacheと組み合わせたらどう動くかはわからない
  • Redisを立ててキューに積んだほうがいいかも
  • 並列処理をしたい、というより他の処理を先に進めたいならasync/awaitを使いますね。他の言語なら
    • JavaScript
  • PHPのライブラリで非同期処理

php-srcのコミットを日々追っている人を見つけた

オブジェクト指向について話ができたら

Dockerを使ってLaravelプロジェクトを本番デプロイするやり方をお聞きしたい (yamato)

(リモートなので長文失礼します。。)
本番環境にDockerでLarvelをデプロイしている方の運用方法をお聞きしたいです。
お聞きしたい理由



LaravelをAWSのECSなどDockerで本番にデプロイする場合、コンテナは1つにまとめてデプロイしたほうが良いのでしょうか?
(1つのコンテナとは、nginx・php-fpm・supervisorをインストールし、Laravelプロジェクトも内包したコンテナ)

質問の理由は「コンテナは1つにしないとだめじゃない?」と指摘されたからです。

指摘の理由は、「通常の2コンテナ(nginx,php-fpm)の構成だとnginx,php-fpm両コンテナにそれぞれLaravelプロジェクトを内包する必要があり、両コンテナのファイルに差異が生まれると不具合の可能性があるから」
でした。

私個人としては、Dockerのbuild、push、AWSならタスク設定さえ間違えなければ問題ないと考えていますが。。。

経験者の方々のお話をお聞きしたいです。


  • この構成なら1つでいい気がする(reoring)
  • 分けたときのメリットと、設定を間違えたときのダメージを考えると、あまり分ける必要性はなさそう
  • 分けたとしても、同時にデプロイしないと壊れる
  • どうしてもわけるなら
    • nginxコンテナでphp-fpmコンテナのLaravelコードをマウントするとか
  • Istio
    • マイクロサービスを作りやすくするミドルウェア
    • Istio

他の言語とPHPはどのように違うか

  • 経験してきた言語
    • Java
    • C#
  • 最近Ruby, PHPが良いと聞くようになった
  • PHP
    • あまり詳細なプログラミングの知識がなくても書ける
      • 7系になって複雑になってきてはいる
      • Rubyよりは複雑でない
        • わりとストレートに書ける
        • Rubyは読めない、魔術が多い
    • 実行環境を作るのが簡単(構築でもレンタルでも)
  • なんの言語を勉強したらいいか?
    • たいていどの言語でも実現できるので、好みの言語を選んでいいが、
    • むいているかどうかは別の問題
      • 機械学習をするのにPythonはやりやすいが、PHPはライブラリがないので大変とか
  • CとC#はどれぐらい違うのか
    • インドとインドネシアくらい違う
  • C言語
    • A言語、B言語ときて順番でC言語となった、という説がある。
    • Unixを作るために作られた言語。
  • Cを知っておけばなんでも分かるんじゃないかと
    • PHPもPythonもLinuxもC
  • C言語から学び始めると、マスターする前に挫折してしまう可能性がある
    • 学びやすい言語をある程度習得してから学ぶと良さそう

Ubuntu、CentOS、ArchiLinux

  • 他とのディストリビューションとの違い
  • どれがいいの?
    • CentOS = RedHat Enterprise Linux(RHEL)から商用パッケージを除外したもの
    • 呼び名は「コミュニティベースで開発されたエンタープライズクラスのオペレーティングシステム (Community ENTerprise Operating System) 」に由来する。
      • RedHatは問い合わせできる先があるので、そういうのがほしい会社は使っている
      • 保守的でカーネルのバージョンが古め
      • Fedra
        • RHELのベータ版
        • なので先進的だが、バギーなことも
        • Fedra→RHEL→CentOSのように半年か1年のペースでアップデートが降りてくる
      • Amazon LinuxはRedHat系だが、カーネルが新しいし
    • Ubuntu (Debian系)
      • 先進的な機能を積極的に取り入れている。
      • カーネルのバージョンが新しめ
      • Ubuntuはデスクトップ向けに出てきた
        • GUIを重視
        • 要求するスペック
        • Ubuntuが流行ったからサーバ用も出てきてUbuntu Severになった
        • Ubuntuはユーザが多く情報も多い
      • Debianは保守的
        • リリースサイクルが遅い
        • 安定したパッケージだけ
        • GUIを重視しない
  • yumとaptの違い
    • あんまり違わない
  • カーネルのバージョン
    • マイナーはポコポコ変わる
      • Androidのせい
    • メジャー

アセンブリとOS開発 (reoring)

YYPHPは毎週やってます

PHPについてワイワイ話したい方は、YYPHPのイベント情報をチェックしてみて下さい。

以上、YYPHPのレポートでした。次回もワイワイやっていきたいと思います! では、また来週!