►
From YouTube: 2023-02-22 meeting
Description
OpenTelemetry PHP SIG Meeting
A
B
B
A
A
B
B
Yes
might
just
be
you
and
me
today,
because
rock
city
was
working
late
yesterday
and
probably
wouldn't
pick
it.
B
B
I
haven't
started,
I
haven't
tried
to
debug
it
yet,
but
I
am
I
added
the
I
o
auto
instrumentation
library,
to
one
of
my
applications
today
and
I
I
got
a
handful
of
f
opens
and
F
rights
just
as
their
own
independent
traces
that
were
sort
of
detached
from
the
touch
from
the
the
regular
traits.
So
I'm,
not
sure
where,
where
they
came
from
whether
they've
come
from
composer
sort
of
the
completion
of
a
composer.
A
Auto-Instrumented
Drupal,
so
there
were
a
few
traces
and
some
of
them
contained
only
only
one
PDO
called
for,
for
instance,.
A
B
Radio
all
right,
it's
three
past
I'll,
just.
A
B
A
I
said
we
have
to
add
another
meeting.
B
A
Application
and
of
course
there
were,
there
was
a
conflict
because
this
example
application
required
a
newer
version
at
least
10
and
higher
and
I
have
952
here
and
it
didn't
work.
It
I
couldn't
fix
it,
because
there
was,
as
you
know,
conflict
in
this
version.
So.
A
I
relaxed
this
dependencies
yeah.
B
I
actually
did
notice
that
when
I
was
when
I
was
doing
a
review,
that
I
think
I
didn't
mention
it
or
it
had
already
been,
but
I'll
probably
figure
it.
B
A
Okay,
if
you
will
have
any
other,
you
know
suggestion,
or
how
can
we
do
that
better,
just
open
pull
request
or
let
me
know,
yeah.
B
B
So
maybe
if
we
can
figure
out
how
far
back
it
does
go,
we
can
just
do
a
greater
than
or
equal
to
whatever
the
position
is
where
available,
six
or
or
maybe
we
look
only
look
back
as
far
as
what
is
an
actively
supported
version
of
laravel,
but
for
a
moment,
I'm
happy
with
that.
Okay,.
B
A
Yes
and
for
auto
instrumentation
here,
I
opened
a
new
pull
requests
with
this
new
two
new
packages
that
we
recently
added
this
Symphony
and
a
lot
of
it.
So
I
added
this
to
them.
A
A
But
but
then
we
have
to
be
sure,
because
we
have
to
find
correct,
Auto,
instrumentation
packages,
and
for
that
we
can
use
this
prefix
Auto
open,
telemarket.
C
A
Yeah
but
the
yeah,
so
so
this
list
is
used
in
advanced
mode.
It's
always
asking
you
if
you
want
to
install
the
specific
package,
but
the
the
code
is
taking
the
packages
from
this
list.
So
then
we
can.
We
can
ask
you,
as
I
said
we
can
just
ask
a
packages
or
dot
org
for
this
packages
and
just
to
get
rid
of
this
list.
Hard-Coded
in
in
this.
You
know
in
this
install
PHP
script.
B
We
can
be
very
confident
that
that
nothing
else
is
going
to
use
that
open
Telemetry
Auto,
maybe
convention,
okay,
okay,
because
we're
in
control
you
and
I
and
Bob.
That's.
A
Then
we
will
not
need
you
know,
preparing
or
creating
such
pull
requests
as
I
created
today,
because.
B
A
It
seems
very
Niche
I
also
don't
have
such
a
environment.
B
Yeah
I
mean
potentially
virtualization,
but
I'm
yeah.
It's
not
the
most
important
thing
in
my
life
at
the
moment
to
look
into
that.
A
So
I
have
these
two
things
that
I
mentioned
on
on
slack
channel,
so
I
think
that
we
can,
as
I
mentioned
hook
into
or
implement.
This
area
need
PHP
area,
init
function
in
C
extension
and
air
shutdown
function,
and
then
we
can
open
a
call.
The
code
that
will
create
spawn
the
root
span
there
and
end
in
the
air
shutdown
function.
So.
C
A
I
mean
by
that
that
for
us
in
Chronos
calls
we
have
to
follow
the
current
approach
that
we
have.
So,
as
we
have
this
a
async
library,
httpsync
library
hooks
for
for
this
Library.
So
we
have
to
follow
the
same
approach
here.
A
So
this
this
C
extension
approach
will
work,
in
my
opinion,
only
for
normal
requests-
yes
synchronous
ones,
yeah,
and
then
we
we're
in
we
can-
and
you
know
we
will-
we
will
not
need
to
prepare
specific
hook,
specific
Library,
Auto
library
for
specific
Frameworks,
because
we
can
handle
that
in
generic
way.
But
of
course
we
can
prepare
hooks
for
specific
Frameworks
as
a
as
a
kind
of
extension
to
that,
but
whenever
we
we
will
not
have,
we
will
not
handle
a
specific
framework.
A
A
Request
root
spawn
and
whenever
we
will
have
any
new
library,
this
code
in
C
extension
would
create
root
span
for
us
always
so.
C
B
Yeah,
so
that's
useful.
How
can
we
know
when
we
I'm
trying
to
say
how
can
we
know
when
we're
using
a
asynchronous
runtime
so
that
that.
A
B
A
What
I
figured
out
that,
when
we
can
get,
we
can
get
URI
from
from
this
function
when,
when
this
function
is
called,
we
can
get
URI,
but
for
asynchronous
calls
we
we
do
not
have
this
URI,
so
that's
kind.
That's
a
way
to
distinguish
these
two
calls.
For
instance,
yeah.
B
I'm
trying
to
say
sorry,
we
could
probably
do
the
asynchronous
runtimes
as
their
own,
whatever
instrumentations
I,
think,
because
I
would
think
they
would
have
a
method
that
we
could
look
I.
Think
so.
B
A
Think
yeah,
but
generally,
my
idea
was
to
support
this
Frameworks
that
we
do
not
hook
that
we
do
not
have
a
hooks
for
so
yet
because
it
seems
probably
that
users
will
be
most
interesting
in
the
fact
that
there
were
just
some
some
requests
and
they
are
probably
not
very
much
interested
in
the
in
the
child's
pants
that
we
are
creating
as
a
result
of
instrumenting
framework
I.
Think
yeah,
and
this
is
the
main,
the
the
most
important
thing
from
the
user
perspective.
Probably
is
this
root
root
span.
B
Yep
yeah,
that
would
that
makes
a
lot
of
sense,
so
I
think
provided
that
we
could
order
heaven
configure
it
on
or
off
by
a
say,
environment
variable
or
something
like
that.
Then.
C
B
I
can
either
turn
it
off
if
I
don't
want
it
or
turn
it
on.
If
I
do
want
it.
Yes,
then
that
seems
that
seems
fine.
A
Yes,
and
also,
if
we
don't
in,
if
users
don't
want
to,
doesn't
want
to
have
a
specific
framework
instrumentation,
he
doesn't
need
to
install
specific
Auto,
instrumentation
library
right.
So
then,
and
then
he
will
have
only
this,
for
instance,
this
root
span
that
will
be
created
from
the
call
from
the
C
extension.
B
Yes,
you
would
also
need,
when
you're,
creating
that
brood
span
to
consider
Trace
propagation.
A
Yes,
that's
true
so
so
generally
I
was
thinking
about
preparing
some
kind
of
helper
function
in
the
PHP
and
called
that
from
from
the
sea,
but
also,
as
you
said,
I
need
also
this
Trace
propagation.
So
I
have
to
pass
some
information
to
this
function.
C
C
A
B
B
That's
that
does
that
cover
enough
about
what
we
just
said.
Yes,.
C
B
A
Another
thing
to
talk
about
yes
and
then
another
topic
that
I
had
in
my
mind,
was
that
I
was
thinking
about
getting
great
relying
on
these
external
objects
and
to
store,
for
instance,
in
request
span.
That's
something
that
we
were
discussing
some
time
ago
and
yes,.
A
So
I
think
that
we
can
create.
We
can
use
the
same
similar
approach
as
for
this
creative
roots,
Panic
extension,
so
we
can
in
this
air
init
function.
We
can.
Whenever
a
new
request
will
come,
we
can
generate
a
new
request,
ID
and
store
it
into
a
php's
uses.
These
Global
objects
as
a
requests.
C
A
We
have
to
also
have
additional
function
added
into
extension.
That
will
give
us
this
request,
ID.
That
will
give
us
this
request
ID.
So
we
can
call
this
function
from
the
C
extension
in
the
PHP
code,
and
this
call
will
return
us.
This
request,
ID
and
this
request
ID-
can
be
used
to
as
a
key
for
the
spans
that
we
will
store
in
in
the
context
in.
C
B
Okay,
I'm
not
sure
that
I
correctly
captured
that
restoring
a
root
span
or
a
restoring
yeah.
A
Yes,
so
the
thing
is
that
inside
this
PHP
area
function,
which
is
which
is
called
whenever
a
new
request
is
coming.
This
is
a
c
function
from
the
C
extension
in
this
function.
A
We
should
create
a
new
request:
ID,
we
will
maintain
a
list
or
maybe
count
some
kind
of
counter,
because
counter
is
enough
in
my
opinion,
and
whenever
new
request
will
come,
we
can
just
increase
the
Discounter
and
then
the
the
value
of
the
counter
will
be
our
current
request,
ID
and
then
we
we
have
to
expose
one
additional
function
inside
in
this
C
extension,
which
will
be
about
returning
this
request.
A
Id
and
then
this
function
can
be
used
from
from
a
PHP
code,
normally
as
you
as
we
calling
any
other
function
that
are,
that
is
from
extension,
and
then
we
can
use
this
function
just
to
get
this
request.
Id
and-
and
we
can
store
then
any
spawns
that
we
will
create
in
the
PHP
code.
We
can
store
this
spans
in
a
map
in
the
context
and
map
as
a
key,
we'll
use
request.
Id.
A
B
A
That's
the
whole
idea:
I
can
describe
this
in
in
more
I.
Don't
know
General
way,
maybe
in
some
kind
of
document,
for
instance,
if
needed,
and
but
also
I,
can
try
to
implement
that
and
check.
If
that
will
work.
B
Yeah
yeah,
my
main
concern
again,
is
with
I.
I
can
say
that
this
I
suspect
that
this
would
work
nicely,
but
you
know
more
PHP
and
fcgi,
but
when
we're
using
asynchronous
runtime
so
particularly
once
we
start
using
fibers
and
have
like
multiple
requests
going
on.
Yes,
you
know
within
it
within
a
within
a
loop
within
the
one,
within
the
one
process
that
this
might
get
very
hard
to
manage.
Yeah.
B
B
A
I,
don't
know
yeah,
but
maybe
that's
not
a
good
idea
if
we
will
not
resolve
the
problem
of
passing
Chronos,
because
because
the
American
is
that
I
would
like
to
introduce
eventually
should
be
should
be
General.
Otherwise
we
will
have
a
problems.
I
think
yeah.
B
That
tried
to
get
a
root
span
would
just
Traverse
up
the
current
context
until
it
finds
us
like
the
earliest
span,
video
and-
and
that
is
the
root
span,
because
we
we
know
that
context
can
sort
of
fork,
and
so,
if
you're
running
it
in
an
asynchronous
environment,
then
you
can
have
multiple
contexts
going
on
in
each
one's
relevant
only
to
the
the
sort
of
request
that's
being
processed,
and
so,
if
you
can
so
if
get
root
span
was
simply
able
to
Traverse
up
the
the
context
and
find
that
topmost
span,
then
that
is
the
root
span.
A
B
But
that's
good
in
theory,
but
every
that
I've
not
been
able
to
do
it
yet
and
and
Tobias
seem
to
think
that
it
was
either
a
bad
idea
or
respected
about
like
another
level.
Why?
But,
yes,
coming
from
other
APM
solutions
that
I've
been
used
to
wear,
you
know
a
root
span
is
or
transactions.
Sometimes
that's
all
it
is
is,
is
an
important
component
that
you
can.
Just
access
directly
did
make
I
did
make
a
few
things
easier.
C
B
A
Yes,
I
was
thinking
if,
if
that's
something
that
we
really
needed,
maybe
we
could,
because
this
was
introduced
due
to
the
fact
that
we
wanted
to
reduce
this
cardinality
of
URI
right
yes
and
I
was
thinking
if
we
can
do
that.
Maybe
in
other
way,
maybe
not.
Maybe
in
the
call
that,
where
the
root
where
the
span
is
created.
A
B
Yeah,
so
if
we
just
if
we
just
use
something
very,
very
generic
like
HTTP,
get
HTTP
post,
then
that's
that's
good
cardinality,
but
maybe
too
good,
and
it
can
be
nice
as
a
as
you
use
it
to
be
able
to
see
something
more
meaningful
like
what
was
this
request
doing,
which
is
where
a
route?
B
B
Yes,
we
do,
we
do
yeah
I.
B
C
B
Yeah
all
right:
well,
let's
keep
thinking
about
it
and
and
do
some
more
do
some
more
research.
A
B
B
You
know
for
the
for
the
realistically
probably
the
two
most
popular
runtimes,
that
there
are,
which
is
not
PHP
and
fast
CGI,
where
you
know,
one
request
is
one
process
and
it
does
have
an
initialize
and
a
shutdown,
and
you
know,
doesn't
share
anything
so
I
think
that
would
work
but
I'm
not
sure
that
it
simplifies
the
problem
for
us
where
we
also
want
to
support
asynchronous
runtimes
and
even
more
so
in
the
future,
because
you
know
PHP
is
evolving
and
with
fibers
and
things
you
know,
I
I
suspect
that
PHP
is
gonna
start
looking
more
like
node
is
now
you
know
with
a
central
event,
Loop
and
you
know
doing
lots
and
lots
of
things
at
once.
A
But
I
I
haven't
investigated
that
very
deeply,
but
is
a
PHP
have
some
kind
of
support
for
this
asynchronous
calls
in
in
the
engine
or
how?
How
that's?
Because
node.js,
you
know
that
the
engine
is
is
built
in
this
way,
that
everything
is
there
that
is
needed
for
handling
disaster.
Synchronous
calls,
but.
B
So
I
think
the
with
fibers
comes
that
capability,
so
they're
still
user
land
code.
That
now
required
to
you
know
create
that
that
event,
Loop
and
dual
game
manage
all
of
the
asynchronous
code,
but
all
of
the
I
think
all
of
the
constructs
are.
There
now
has
a
probably
PHP
8.1
I
think.
A
B
Yes,
it's
it's
there,
but
five
is
a
quite
a
low
level
thing.
So
I,
don't
think
that
anybody
expects
the
average
user
to
be
able
to,
or
indeed
to
understand
how
Farmers
work.
But
there
are
a
couple
of
good
event
loops
that
already
exists:
I'm
thinking,
amp
and
react
and
I.
Think
Revolt
is
the
the
newest
standard
for
event
loops,
which
is
those
two,
a
collaboration
between
react
and
amp
yeah.
So
look
I.
Think
it
I
think
that
it's
that
it's
coming.
C
A
And
so
it's
that's,
probably
very
internal
mechanism
that
was
built
into
the
PHP
engine.
C
A
A
That's
all
on
last
meeting
I
said
that
I
will
presented
this
tool
for
for
generating
these
stacked
races
and
then
generate
hooks
for
us.
Yes
from
that,
but
I'm
not
ready
yet
because
I
was
focused
on
on
different
things
this
week,
but
maybe
next
week
I
will
finish
that
tool
and
then
maybe
we
can
discuss
that.
B
C
B
Which
Tobias
has
put
together
in
his
own
area
yeah,
so
I'm
actually
kind
of
busy
at
work
at
the
moment,
but
I'm
I'm,
trying
to
think
about
whether
and
how
we
can
integrate
that
into
our
main
batch
processor,
rather
than
have
to
seem
a
little
bit
different
batch
processes:
okay,
okay,
yes,
so
anyway,
I
still,
don't
know
what
to
do
with
that,
and
it's
probably
not
a
problem
that
I
need
to
solve
right
now.
A
B
Yeah
yeah
yeah,
it
does
work
quite
well.
I
I
was
able
to
test
it
out
with
an
asynchronous
runtime
and
it
it
does
work
it
uses.
B
It
uses
an
event
Loop
that
uses
fibers,
so
it
only
works
with
nhp
8.1
Plus,
but
but
it
really
can
do
sort
of
background
sending
on
a
timer
of
of
traces,
which
is
like
a
really
great
thing:
yeah.
It's
just
I
think
it
has
a
few
more
dependencies
than
we'd
like,
and
it
also
doesn't
work
with
all
of
the
PHP
versions
that
we
want
to
support
the
open
telemetry,
but
but
maybe
in
the
future.
B
You
know
in
two
years
when,
when
we're
no
longer
supporting
PHP
8.0,
maybe
then
it
can
become
the
sort
of
the
primary
or
Main.
B
A
B
A
I
think
that's
all
I
can
only
show
you
that
spans
from
Drupal
that
I
had
that
I
have.
A
Do
you
see
it
I
do
yeah.
So,
as
I
said,
there
are
several
spawns,
there
are
several
traces
that
contain
only
one
spot
and
the
as
you
can
see.
There
are
PDO
operations
here,
oh
and
also,
for
instance,
HTTP
post.
When
we
have
this
root
span,
so
then
there
is,
we
have
a
red
spawn
and
under
this
root
span
we
have
a
about
100
different.
C
A
C
A
And
now
so
now,
the
question
would
be
why
we
have
this
this
traces
with
PDR
that
are
not
connected
to
the
root
span,
but
I
think
that
this
might
be
something
expected
due
to
the
fact
that
probably
some
operations,
I
I,
think
that
some
operations
are.
You
know
invoked
before
this
Main
requests.
C
B
Yes,
so
here
I,
so
I
I
think
I
had
a
similar
problem
in
WordPress
and
I
solved
it
in
a
slightly
unusual
way,
but
dribble
uses
composer
and
yes.
A
B
Yes,
and
so,
is
that
using
so
Drupal
is
based
on
Symphony?
Isn't
it
yes.
A
No,
this
is
the
the
symphony
instrumentation.
B
A
Yes,
yes,
so
with
this
interface,
the
trace
looks
a
little
bit
different,
because
we
have
more
this
post
request.
C
A
A
Yeah
sub-requests,
so
that
looks
very
similar
what
we
have
currently
in
Slim.
Yes,.
C
A
And
and
for
now,
I
I
just
decided
to
hook
into
this
concrete
implementation,
which
is
HTTP
kernel,
handle
a
method
and
not
this
interface.
A
C
B
A
A
Have
for
now
at
least,
we
have
initial
versions
for
this
laravel
and
Symphony,
so
we
can
extend
that
further.
A
Yes
and
I
believe
I
believe
that
this
Symphony
and
laravel
I
think
that
they
are
the
most
important
from
a
user
perspective.
I
I
got
also
some
questions
from
users
on
this
slack
Channel
about
laravel,
for
instance,
right.
C
B
Yeah
I
mean
they
probably
are
the
two
biggest
most
popular
Frameworks
these
days.
Aren't
they
yeah.
C
B
Yes,
that
would
be
correct.
Yes,
and
maybe
we
need
to
reach
out
to
a
couple
of
the
developed
communities
such
as
WordPress
and
Symphony
and
laravel
just
to
say:
hey
we
built
this.
What
do
you
think?
Does
anyone
want
to
test
it
out
or
requests,
welcome
and
and
just
encourage
some
collaboration.
B
That
would
be
great
because
we
can
only
do
we
can
only
do
so
much
and
we're
not
experts
in
in
most
of
those
Frameworks
by
any
means.
Yes,.
A
Yes-
and
you
know
the
funny
things
that
yesterday
I
I
built
this
hook
for
a
lot
of
her,
it
took
me
I,
don't
know
maybe
20
minutes
and
it
worked.
But.
C
A
Had
I
I
spent
the
whole
day
just
trying
to
write
a
test
at
least
one
test.
Yes,.
B
Oh
dear
yes,
yes,
I
will
appreciate
the
the
pain
there
and
there's
certainly
some
of
them
such
as
WordPress,
where
I
didn't
even
try
to
write
a
test.
It
was
just.
It
was
too
hard.
A
Yeah,
because
for
writing
this,
you
at
least
need
to
know
some
internals
of
how
framework
works
works,
and
that
is
very
hard.
C
B
Yes,
it
is,
it
is
I
was
able
to
do
some
work
for
sleep
because
I
understand
it
quite
well,
because
that's
the
that's
the
framework
I
work
yes
every
day,
but
yes
much
much
harder.
It's
it.
Symphony
and
laravel.
I
think
that.
B
B
A
B
Without
with
it
more
peer
to
make
us
go
faster,
we
just
chat
for
a
very
long
time,
but
it
was
good.
Thank
you,
I
appreciate
it
appreciate
all
of
the
discussion
that
we've
had
today.
Yes,
all
right,
we're
done
I
will
see
you
online
during
the
week.
Thank
you
all
right.
Take
care
bye-bye
bye.