Monthly Archiv: July, 2019
How are you going to find that? You don’t want to implement a search engine on your own as your content grows or integrate with real-world places and addresses. Instead, leverage the rich feature set of an established solution like ElasticSearch. This month we look at how to integrate it with y...
PHP Internals News: Episode 17: Numeric Literal Separator
London, UK
Thursday, July 4th 2019, 09:17 BST
In this seventeenth episode of "PHP Internals News" I talk with Theodore Brown (Twitter, Website, GitHub) and Bishop Bettini (Twitter, W...
We continue this series finishing up the last part of basic CRUD in a Vue SPA: creating new users.
The post Building a Vue SPA With Laravel Part 6 appeared first on Laravel News.
Join the Laravel Newsletter to get Laravel articles...
The PHP development team announces the immediate availability of PHP 7.2.20. This is a bugfix release.All PHP 7.2 users are encouraged to upgrade to this version.For source downloads of PHP 7.2.20 please visit our downloads page, Windows source and binaries can be found on windows.php.net/download/....
Using ReactPHP to run Drupal tasks
Saturday 6, July 2019
mglaman
ReactPHP is an event-driven non-blocking PHP framework that allows to you work in a long-running script through an event loop. At its core, ReactPHP provides an event loop and utilities to trigger events at specific in...
Package:
Summary:
Implement objects that behave like scalar values
Groups:
Author:
Description:
This package implements objects that behave like scalar values...
Read more at https://www.phpclasses.org/package/11272-PHP-Implement-objects-that-behave-like-scalar-values.html#2019-07-09-10:04:14
A server can return 501 Not Implemented
when it doesn’t support a
certain feature.
The RFC specifically lists ‘not supporting a specific HTTP method on any
resource’ as an example of this.
In most practical cases this is similar enough to 405 Method Not Allowed
,
and 405 is probably the clearer status code for most cases.
But there is a difference. Given that 5xx are server-side errors and 4xx errors
are client-side errors, it could be argued that emitting a 405 means that a
method should never really have been called by a client, but a 501 could mean
that the method should have worked, but the server has incomplete functionality.
I sometimes use 501 during development of new API’s as a ‘stub response’ for
features I intend to build, but haven’t built yet.
Example
HTTP/1.1 501 Not Implemented
Content-Type text/html
<img src="http://geocities.example/work-in-progress.gif" />
References
Latest PECL Releases:
- rdkafka 3.1.2
* Fix build
- ahocorasick 0.0.7
Issue #21 fixed. Problem with buffering all previous searches in the trie.
- swoole 4.4.0
Backward incompatible changes
---
- Consistent with
PHP
official, no longer supports PHP7.0
(@matyhtf)
- Remove the
Serialize
module, which is maintained in a separate ext-serialize extension. Reason: Due to frequent changes to the PHP
kernel, stability cannot be guaranteed
- Remove the
PostgreSQL
module and maintain it in a separate ext-postgresql extension. Reason: PostgreSQL
uses asynchronous ways in the kernel and lacks the necessary unit tests to guarantee quality
-
Runtime::enableCoroutine
is no longer automatically compatible with the internal and external environment of the Coroutine. Once enabled, all blocking operations must be called in the Coroutine (@matyhtf)
- Due to the introduction of the new
CoroutineMySQL
client driver, the underlying design is more standardized, but there are some small downward incompatible changes
-
CoroutineMySQL->fetch/nextResult
is optimized for on-demand reads, which will trigger IO scheduling
- When the
defer
attribute is on, the request of statement
needs to use statement->recv
to receive the response
- When the
defer/fetch_mode
feature is enabled, if there is unreceived data, a new request will be banned
- Unlike asynchronous, the
connected
attribute is no longer updated based on events in real-time (It's not reliable) but is updated after the IO
operation fails
-
CoroutineHttpClient->set_cookie_headers
no longer have key names (#2664) (@twose)
Deprecated content
- The
Buffer
module will be discarded. Reason: It is highly replaceable and has low usage. It can be replaced by PHP
string or fopen("memory")
- The
Lock
module will be discarded. Reason for discarding: There may be problems with locking in the Coroutine. You can use Chan
to implement the Lock of the Coroutine version
- Since async
stream_socket_pair
is introduced, it is recommended to enable the hook by flag SWOOLE_HOOK_STREAM_FUNCTION
instead of SWOOLE_HOOK_STREAM_SELECT
New features
- Added Library, using pure
PHP
to write kernel functions instead of C/C++
, providing the following features
- Added high quality
PHP
module CoroutineWaitGroup
(@twose)
- Use the
PHP
code to implement the CURL hook, one-click to make the CURL non-blocking, currently the experimental feature, you need to call Runtime::enableCoroutine(SWOOLE_HOOK_CURL)
to open (@matyhtf) (@Yurunsoft)
- Use
PHP
code to implement exec
/shell_exec
of Coroutine version (#2657) (@Yurunsof)
- When
RuntimeHook
is turned on, the function array_walk
, array_walk_recursive
will be replaced by the version of Swoole, which will solve the problem that the native function cannot be reentrant, but it will not be able to traverse object (@matyhtf) (@twose)
- Added a new Coroutine Preemptive Scheduler to prevent the Coroutine from taking too long CPU time to cause other Coroutine to starve. Open the
swoole.enable_preemptive_scheduler = On
by php.ini
. For details, see preemptive_scheduler (@shiguangqi)
- Added
Timer::list()
to get TimerIterator
, which can traverse all timers, TimerclearAll
clears all timers, Timerinfo(int $id)
gets timer information, Timer::stats()
gets the global timer status (#2498) (@twose)
- Added two methods
getOption
and setOption
for CoroutineSocket
(9d13c29) (@matyhtf)
- Added
$master_pid
property and shutdown
method to ProcessPool
(a1d6eaa) (@matyhtf)
- Added the 4th parameter of the constructor of
ProcessPool
, when true, the underlying layer will automatically create the Coroutine in the onWorkerStart
callback (8ceb32cd) (@matyhtf)
- Support non-blocking
stream_socket_pair
in Runtime hook (#2546) (@matyhtf)
- Added
static_handler_locations
setting of HttpServer
to set static file path (@matyhtf)
- Added
CoroutineHttpClient->setBasciAuth
method to automatically send Authorization
header (#2542) (@hongbshi)
- Added
CoroutineHttp2Client->ping
method (40041f6) (@shiguangqi)
- Added
task_use_object
(#2659) (aa01317) (@twose)
Enhancement
- New
CoroutineMySQLClient
driver (#2538) (@twose)
- The underlying programming mode using
C++
and Coroutine (sync writing, async performance)
- Support SSL connection (configure
['ssl' => true]
when connect)
- Support request with large data (unlimited)
- Support response with large data (unlimited)
- Support
fetch
to read by line (now fetch
is read on demand, data without fetch does not consume user memory) (#2106)
- Support
nextResult
read on demand (ibid)
- Optimized protocol parser
-
date
related type decimal precision support
- Error code and information are consistent with
PDO
/mysqli
-
CoroutineRedis
compatibility mode, enabled by $redis->set(['compatibility_mode' => true])
, which can make the result of hmGet/hGetAll/zRange/zRevRange/zRangeByScore/zRevRangeByScore
consistent with phpredis (#2529) (@caohao-php)
- Now
100K
Coroutine are allowed to exist at the same time by default (c69d320b) (@twose)
- Support
bailout
(can exit the process correctly when a fatal error occurs in the Coroutine) (#2579) (@twose)
-
Server
can display a friendly 400/404/503
when error occurred (@matyhtf) (f3f2be9d)
-
Server
enable reload_async
and send_yield
by default (#2555) (9d4a4c47) (@matyhtf)
-
Server->onFinish
callback is in Coroutine (@twose)
-
CoroutineHttpClient
enable websocket_mask
by default
(c02f4f85) (@twose)
- Scheduling operation of
Channel
outside the Coroutine is no longer allowed (519b6043) (@twose)
-
WebSocketServer
will close the connection when the handshake fails (#2510) (@twose)
- Under the
Linux
, the dead parent process will automatically send a signal to kill the child process (4b833a3d) (@matyhtf)
- Memory optimization of
Socket->recv
(642a3552) (@twose)
- Floating point calculation optimization (#2572) (@tangl163)
- All built-in classes prohibit cloning/serializing/unseting-declared-properties (f9c974b8) (@twose)
-
Server->bind
will generate a warning and return false when uid
is more than UINT32_MAX
- Support
PHP7.4
(#2506) (@twose)
Fixed
- Fixed
getProcess
of ProcessPool
(#2522) (@matyhtf)
- Fixed a bug that exceptions were ignored in some special cases (@twose)
- Fixed memory leak by timer after
fork
process (8f3abee7) (@twose)
- Fixed timezone on non-Linux systems (#2584) (@devnexen)
- Fixed
enable_coroutine=false
+ task_enable_coroutine=true
(#2585) (@matyhtf)
- Fixed Http2's trailer method can not output a empty value header (#2578) (@twose)
- Fixed
CoroutineHttpClient->setCookies
memory error in special cases (#2644) (@Yurunsoft)
- Fixed #2639 (#2656) (@mabu233)
- Fixed
arginfo_swoole_process_pool_getProcess
(#2658) (@mabu233)
- Fixed
static_handler
does not support soft links (@matyhtf)
- Fixed a bug (I don't know how to describe it) (22504dd4) (@matyhtf)
- Fixed
Server->getClientInfo
error (#2639) (@matyhtf)
- Fixed an illegal operation of the same Socket with multiple Coroutine operations (#2661) (@twose)
- Fixed swoole_table iterator coredump (#2663) (@mabu233)
Coroutine scheduler ?
- Added
SwooleCoroutineScheduler
class as the entry for the cli
script, replacing go() + SwooleEvent::wait()
- Added
SwooleCoroutineRun
function to provide wrapper for SwooleCoroutineScheduler
-
go() + SwooleEvent::wait()
may be deprecated
Internal
- Continuous underlying code quality optimization work (@swoole)
- More unit tests, and use the assertion library swoole/assert based on webmozart/assert secondary development (@twose)
- Completely abolish the
Windows
support plan
-
CoroutineHttp2Client
refactor (f64874c3) (@matyhtf)
- The faster callback function caller (@twose)
Experimental content
- May add
CoroutineServer
and CoroutineHttpServer
in 5.0
- solr 2.5.0
- Atomic Updates (partials)
- Simple Optimistic Concurrency
- Compatibility with PHP 7.1, 7.2, 7.3, latest 7.4
- Enable gzip encoding if server supports it
- Fix Real Time Get requests fails if it wasn't the first request
- Fix addQueryField return wrong query
- Fix Solr Extension build fail with curl 7.19+
- gRPC 1.22.0
- gRPC C Core 1.22 update
- rdkafka 3.1.1
* Expose query watermark offsets (#219, @gytislakavicius)
* Support sending timestamp (epoch ms) in producev (#228, @lkm)
* Fix KafkaTopic::producev causing segfault on librdkafka 1.0.0 (#222, @Steveb-p)
* Fix version parsing (#224, @dariuskasiulevicius)
- datadog_trace 0.29.0
### Fixed
- Edge case where the extension version and userland version can get out of sync #488
Changed
- Prefix hostnames as service names with
host-
to ensure compatibility with the Agent #490
The post Interview with Adam Kelso appeared first on Voices of the ElePHPant.
The post Interview with Adam Kelso appeared first on Voices of the ElePHPant.